From 0247a21120f88957a260ad68d4b1842923471427 Mon Sep 17 00:00:00 2001 From: geeksville Date: Tue, 14 Jul 2020 22:05:38 -0700 Subject: [PATCH 1/5] add icon for the amazon store --- app/src/main/ic_launcher-114x114.png | Bin 0 -> 12994 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 app/src/main/ic_launcher-114x114.png diff --git a/app/src/main/ic_launcher-114x114.png b/app/src/main/ic_launcher-114x114.png new file mode 100644 index 0000000000000000000000000000000000000000..f4ac1da36565bb314886937e23e6164312d20df8 GIT binary patch literal 12994 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 literal 0 HcmV?d00001 From 28a18ca314500762fcf09b0c6aa5b0c1aa8f61c5 Mon Sep 17 00:00:00 2001 From: geeksville Date: Tue, 14 Jul 2020 22:21:54 -0700 Subject: [PATCH 2/5] Let user rate the app through google play or through amazon --- .../java/com/geeksville/mesh/MainActivity.kt | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/MainActivity.kt b/app/src/main/java/com/geeksville/mesh/MainActivity.kt index a2d36be98..dbc81456b 100644 --- a/app/src/main/java/com/geeksville/mesh/MainActivity.kt +++ b/app/src/main/java/com/geeksville/mesh/MainActivity.kt @@ -334,26 +334,20 @@ class MainActivity : AppCompatActivity(), Logging, private fun askToRate() { exceptionReporter { // Got one IllegalArgumentException from inside this lib, but we don't want to crash our app because of bugs in this optional feature - AppRate.with(this) + val hasGooglePlay = GoogleApiAvailability.getInstance() + .isGooglePlayServicesAvailable(this) != ConnectionResult.SERVICE_MISSING + + val rater = AppRate.with(this) .setInstallDays(10.toByte()) // default is 10, 0 means install day, 10 means app is launched 10 or more days later than installation .setLaunchTimes(10.toByte()) // default is 10, 3 means app is launched 3 or more times .setRemindInterval(1.toByte()) // default is 1, 1 means app is launched 1 or more days after neutral button clicked .setRemindLaunchesNumber(1.toByte()) // default is 0, 1 means app is launched 1 or more times after neutral button clicked - .monitor() // Monitors the app launch times + .setStoreType(if (hasGooglePlay) StoreType.GOOGLEPLAY else StoreType.AMAZON) + + rater.monitor() // Monitors the app launch times // Only ask to rate if the user has a suitable store - if (AppRate.with(this).storeType == StoreType.GOOGLEPLAY) { // Checks that current app store type from library options is StoreType.GOOGLEPLAY - if (GoogleApiAvailability.getInstance() - .isGooglePlayServicesAvailable(this) != ConnectionResult.SERVICE_MISSING - ) { // Checks that Google Play is available - AppRate.showRateDialogIfMeetsConditions(this) // Shows the Rate Dialog when conditions are met - - // Force the dialog - for testing - // AppRate.with(this).showRateDialog(this) - } - } else { - AppRate.showRateDialogIfMeetsConditions(this); // Shows the Rate Dialog when conditions are met - } + AppRate.showRateDialogIfMeetsConditions(this); // Shows the Rate Dialog when conditions are met } } From ed12daae9a7070070edc547f7d746fc99cf35331 Mon Sep 17 00:00:00 2001 From: geeksville Date: Wed, 15 Jul 2020 10:46:13 -0700 Subject: [PATCH 3/5] Chinese updates from @mango-sauce! --- images/amazon-badge.png | Bin 0 -> 13085 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/amazon-badge.png diff --git a/images/amazon-badge.png b/images/amazon-badge.png new file mode 100644 index 0000000000000000000000000000000000000000..6ec998b8e7e251df86ff1fd1788ad4d2f2617cad GIT binary patch literal 13085 zcmb8WbyQr>(k?t$2qCy7Sa5d_ZV3zyg9H!3gFAy;&|rhxKyW9x4U!Oogy4bTE`u|; z-{E)8`QGo|_g#0b`^T)c_wK5vx_9@ku6n8`N<&Qn=Nb7k004jkRFu~O08qimYvrd; z000zU`Y$cW8x%J!1zAA#FeMy$gKjOODgyx2#$(@_VIc3ZoE7!m007*c#~(_cQ>g_2 zz*h&9m(li~-S@{zBYD##D3uo&Tw#2tTXSI&7+oc~VV9<8cX8ovdz0Ob!Yt1!FP(=^ z()dQ2Kt_`|(NmrPJyBDMiIrGGno?sKYgR4N=9jj%j1CsD*6~8lhT2GMG^LZ(;upFp z(cQ(N&!0c{NB(VH`w>NylbMy3oN_r1?+!*|`yF&zbbGm0Jt;3)0xD4}8;GM43-BMl zzq?uZ9&oXswsp~g^Qtr)-IN20B121H;&Vl^<+T{{27LU?KiCf!9pj7*M94knALkeB zUw$pxMSnnH=||B2obNl$g913%1Z8^U{^a#e40o63J$=EYzxQ`}g;kg|C}TZF&(C{ng#E-yh9-L;-1QR;kpmAtYYEro!^uESE zWlJ)7(($>j(wpmh_=VJv*wO*Us*LZ2KzYq85&eBrajnKl|Fs(g4Bfc*5Tm+tjr*tW z^_>*gpsx&~7uN3S-=1a_UD738!w2pVui*(?$zLXGvGles*#6?;Gwr!$AnDKOPIm5t zE8o---k9|4;JeAl82eoo(0Eoj?0%uZW95_iP3cuZwJo#B%68nJIQehg3+)#o7&*d- z9nV!|b=}z5Gt}IUyJu&&UzO*grj^Tfz=`yUyrW8fa0>+@OTK47H*~F~(S#Y6AO26U z;eu?6(KkR;2XYdIV^j~so=)+P7SnVx=SA?=7LI@aNqx2S}Cog4t&BznmpO|h9 z&OKtsKw}yL)qnkDQ{+Wohhq!xA$WF;v(e~2?HFMKU1E{$q`cB< za$J}?_>{5ws7t(jwhBY<5$#Ib(qp=ET~}^JltcGT(pgOwk)}}ko!8e&un(Hd-jXN$ zw6$(}$nTUAbZhTu1uTmlM>d$Vz%FQp+yD!Io34b zWTt(_@ZF{FPUsJT-K0~MOLXKHpKTtmuOX(R>q~bBOSAA;RkL|+ZKC6vmb#K(sK>cz z0>vHq=bT%V)hm8~SxZ=Axz#dG!+AcQzF@{>JFffX({k-_+vo9BZT#Z(390CoGtO2I zE>D3#r-^LgN;fkFp*$0-S)^$5gljlay1#aiJ|xtAecirl2vTmL&=XrQzkz;8hcnx?N1qt zyEQ;7)|ZnXCupySnHuZ)@XBvDvFY(!uq4)9kZNSXequeP*4kD>vTAIYg$Gxmci>(_asaj`Nvp5-S9z#4tdPPq zo9~k?CEuZMNp|^^s>n0}7%RD3m9dpRj23=vHJgX2MFI z4Fo)bwTYU>UF@B3zhwil3cysegfbMG>&Cuy5`?HIuc`e=JZT0}r2W(ypp@L3IfDAG z6!lxKy1(PKJY4L6;v6=adC7B4Or{l+b*wCSOdD^8_m#acSX+5FOt32cY+X1l=0sr7 zQoOLI)i}Fg{6#%gc26unFLm+CHyRq`G<@PqqaIhnS9(9Zze<_%Gkt%VvO2q0v2MlX zUhv~%Gfr&lJ(kk@;#fCra`UE8x0X*Tzc7TvyIyzmpd9}lUDqZzL1%8+s9#rkV}Qf` z5xJU!yzOmV*>GZUtt!%SlfqG5i|MMu$r@FP%T$UPOU6gH--mvN^VqV`ShGPKyzO-5 zp~;RCUkeJQ8ts-$NGnu|Zp(765ZJYY+I6|JjUzbc#={Al`Ns|9i|r#n*+HzruvzAt zJ~q&R5bO`=iD)Vg#j6$#WB1_%4PE@U-soJC=xK1m2Sno6DGoCVlX*TcXYH}U>-^ll z5FW(0e;zK@MG5z@B~6Q+-U$2xG?T4|npNq`3c{M1FZ2RMEK5%wCLQT>ux$N*ClUL1 zq=flN*9OXf3hbn;)if(_aAO^1naUchnjI3eiwo<5|w{QDO+&8 z0AQ0K#JG}H0Z;sRDlL^u!}V_DrKZ=dE+yRNA5;$|mNxB{Bh+V4tzPqIrv_F#4>_w? zX~}fir~CBqb3)l0R;s*jH{V%~6L4>*;eedH>oghv9FfL$@#<#4<~uJ1#nC%fGDsas zCyy5WD&yPRh+>Ed?wwsdOcQEbP~G{(|GQA}9QVEot${=0_AseZXUbMMA-H2>D`Ngp<2{i;tc} znstT3jHwv!$T_?19ISYTtaOvnpNPtcgDMaS$tb93lbymokzX#4Np?crBB`4JA!o49 z@NP1=AN@3d!}XDRXTN<`xbhX_0(H$<_qhg6>6wNLxC{KR$Q#P-r(PhA<%{>(f0 z+^>`N!k9I^aH%n^SI7%*H-NT@#MR&5Uq4g+n?i&h_-(bM1Qe=|7M)|G8BUA=(uXJWx?$+(G~ zbPyPDlC>08ouu|+S{4~(aXuqq{fhfN5~F<;nCz3uXBmxAKnK)V@NOfqQJlGuMAa*I zKV25YA^NE!OM2D-J|V^SkpwB5%}ZHms`tGLgkebZxa+f+vbAwar3wt{sE(&mO*@Zc zNvUQ#tH`ORi+ws4Est=??C}K!#pa&sAL_*M7;5tTFb+!=+=gRkjaM>D@hs=FbcuX5 zOcwhLf7|Se_US7Pv6q?7R9*@9lu|wPwmazRC|=Kh*M6O3s~r!F4x6F?&;_YP*!dJ<#j&6So?u(m8IKo~?t<-Ba--|~%{d6lP% zL)cXD+39#?36DKCt_;9lT=@Mm4Q7A$kyWQ?-&L<5fIMxGUcChm5GfjZWCEWK9tokr zo%rt58f=nzMjY<&4I~s4yY*48b06^X#bQp+p-X@Z&ebL&5I}u^20-1Tf$3eBFW1vV z_B0$Bj^{NWT+zM`tg~)N+RVI@g)Ok+lnuVszr|HXfGT35+jF%g63)2NQq zUkR;L<7V3KxEZ4HID&I!M4FEJcLL8NR=Ce-w7LLKm@igG?`{&|8P&)UBBHwosCGIi()UQl3u;&_m^{Le*5Cy7041%Y~k!0NU-2QnE{21dPFj*+;Xm4@8^U9QP_WqboG&YmYe%Zd5QZrP}_bqEWMoN z96lWJ?Q%Z|^~U(h*7YnoZ}SY{F?#aB74b>glQkpT7SoMrJ25sBktVQRHT3myQCALD zK;1_tf|aD0w!yrwv3wxLN=zjsMN;b41;w|FI6g7VrvsJH+f?`s!E>ySGI!B=TfOTH z+rURWXzD;c#NtuznGd_G+HAPj$kI$~N|=(I$nHF5&dE}o0~*)85C>IGMT7sr@rcKq z&f2y0pTumtf*wP=?2{^mOr15%i3O1Wm3SKZh$0thyd+|i=|rIr$~LW^ST(|~*3wvU zy{H|+%;&!=p&{wiGH-E}*Mg|6H&l^QajIepXe^dS!*t5d9HiTvb*puc?0 z5sT)NUU<|N*N`K@@?$gwMVfWZl~g~(TvOT!PVYZSR&c+q<~P)XND&G$Gk12 zU-Dn4ezkDX=%yC0aQuw0(A~GVMMWJ`unvf2uhoayL2DhQs-k(&YWRHgR~_=@Nrw>6 zypUn#nwXG@wbw$;nmm?q>ev531WLYnN``hyD*l(f-Uoq-ilt>?j$ZUXLB(dj-sT+e z&uCh7gRpxU&2REMFXzE`rYNX2b|dce7SCiE)SQhDIJYw{IoQSv4{1d^**0bjz4LyR zLs#1f!s@FEtu+&w?pVh%^jJq0hkt|r)$%qBt@fW5fB7*P{ej^{wYD{%vw?l)VlMUw z5?nSg^}g%-rz8HFJ&EzTo=tvMqR!0V?VKC!wbN?koU6}g7)y{mdr=1kgde?qAsCBH z7qcBIGjNS8gr@F|1=Ymr3uO)yzew;`l*ppUO%ZkDQwZf{iKtWF zx`TqMceUeR=6i*Og<08kE8oGNez@rS`k_~;Z-xSmKOFg_cATJa!Ae@lg6Jz;i#BWM zeG<7?Qf92J675-->c>5mkJllpX|fLJ7T>D9zce-qx?+|)*?g7OMn6d|J!>%U!^M_= zsf-NLdk+1q`7Jo5M&6dU|tBeR!EaJg!RlaE$RaZFN(g> ziZ6eo(e;!DXwAx87}%q5zk83*F18#L915x_DdSdceosbrbP6C-LT71_&-Z0KP{t1W zk@lpoC5}5IARcR(ymIj?O*e8?t#68v9_6E%=$=`83(sOnVylC(*vG9`qEc@L#3AuetQPmD`}V06aMp$6=h3Y>QCW zcx+FtkmS=3L;h^r=*fn{uKd(V7nTdZTv}00#*zDn_vnd>o1@4^VFXcY9|l$A&W*%G z6mw4Ss)^%5|8H-VjXxcfX(Y=l$~`#t78tBVUZ z4gX>Wh`-TTW@px?>bw_8CFvR50#hA1n?RGU@#cR~O%75Wjh8b^b+1VhJAdQSr&^?s z+rTxyWV9hzW>{WSA$d&d5T}($vVzfA~&D>dWxJy zNErv-gk1L5>rO2USmEvf_R&*m$QP7Rp7nKV63SuMQYGC;U*6-6v8jfa0(XOjWk13m_=A6j#YRI!dAl_k41U5mrxKT%+zpb;D9*og;2!Rb@I z2;Eq%2&wE<#b4GZf5vhSTSLrELTMy_BvV`TAZAGSp8;T%JGOuF;iO0ZT*A+T{W+F< zQDN32{qj?szJKzKX@k-Rto#A%J)$2IANCY!@{f zfocZM=P}n}Pj-%2u01AxCEbiGVN_0{4f<~If3IeW!ts9j2ZX;o78XWlt-EpGcsl~b z-rjdsxug0dDjprMpsns|YM=($_K^nH_=RUv0x^#G%1dav3$UVqTg?A5Ang<({g3>U zyEfK-f7_w}tsRt&4#Z1WR|d`QIjL4<=)A9vl*ia>xkoTDXS4QQ7t4h@{Z1>^ z0I|xGcT3(`?@L0-9WuWc+O}1PIwku~pgz8YjqkQd5vH-4T?!|nJ$H>Bd#Aqws?#1v zv93-AL1{V?IQvUtu40q_Q~PRA^F`DIRff?YF(+n^`-dJ@xdo9={nthHvRwkypfYw8 z^+1C3-zm~8syh8cg}rUmKcnc2A&S z*0&NqEh>AKkzw)Yy56=$rNA92^N9G#k1!xDl@F0h6+m1vTS z*(|Kq0&5cmg9&lcY#TTxrsGww5|_yvv=~U2_kH%X&#wMTiKUFS@4QyvYH<(Q2{=pI zsdRhgKAh{eiO)=Jfh22n7Tf}ViERcdPK^65Jm9$9v_ISd)HAF5-`1c#pQeQb696_O ziUk-;GltMxK7^iYncze)amWC2o;;2rAc#3OWJ5y>^Mxoa4H`XQ&{xG)Nh4|6ruaJv zh0)mxMz??&7V5SDfV;v6fhKNC%n<<*?H)aO_VNXa#-h0rC?pg1mY<~h?{YaFH=r0x z8DEr6!JTW~rrnmDc`LAaFJ%JoNrHXft zGp)1a8hS{s4;n>@@B6F{;6pJ~-GnRY_0??{`>1eL%I4`y(j$={jA+R!!{~Kwawt+%A8P*@ zKdN}yB_6qKIEFZ`%K(5ei9fjVK%-kd;vL81z61lPv)zY=Czzqc%Ng-W53H-uREQBD zP0(85dLzTk3YyUaUUR$oXR_WMR`sHdbBbH@mG^1oJ*HKfs;`DMA|y?}1k8#|baXYk z#LwO-rT7k+f{{JC1%y}d&|uw0UKeMr!Gv+lN0R!OdtEE>e=bLRSX)VPXr`K zm$}M)r~h5ZBxnnh=O2O7&T`W<01LBtUOazr0o0^8=;92GdCNcQe(kh9FlY4dL}~aE ze_w03_nDK_qUXvMz1kZ%oTowPK$o+9c1TJ3o6G)!u$4C#XVT`Yfa;IPZn^i;=dLtw zs&|%9**llMbIJJujxUG3qWT19sB?mH{8%K}$ydKampJJ0I{rF#i#{ z*ZR@ypY{WO@hfBbYZ6Bk>LM}%F16A&Uf2FEb{JqebQ%aX+W#@}>B5&vSs%nte|pMq zExFM)!xB_7xBSgYy)9a{4Il|Of4(JRA-Dnj$@$M4avIJdpXK<(pX<6{PuxA>aP+>O z+4v2uF(B7nDcX&)E)&79M*7(4l5f;O*5l1Co1p5fSXA#e9BTXX!U~o`?BzB5%zs1v zCO(p+aDmVZ=lHr&-`#sOS$0q;q@hum42wC=UuIg*3&xmmm6708VK!B4Vo3b?W{qT4 z>$x>JO{bDim12-?>&k85JK;vh z@2zSQ4oC`#+-HrksCE3qt^{*yUBKVKGPiqy{xPZNlmf=FdoB)-@i*7<3I_E;t*FcL zRhehHD9kK`-up>+O)?7dn~lcy_Kvt|=1`;b&P>&=K&$vEy6Tthx~w<&_~rCsh{Jly zp=6A>;wNuSE1B>P51v9%j@W_Sb9^v2CatGEJ=kG@Y(jJIh#lhuWzqeA`~X|nN-Y$i z7R3uY>~xjkf;UV&ZcAnO;e9@+B8(W~FY*c3A!=fp-8bv!MEr?@HDp4Cj703{w{iPd z@`Bv(-C`GHAaB&o?y-fU|7T(~V}ux;*y6*dpruaksnX3iI*#PAje%Y$HIq4*7CP!_ z*@0>@(lSiCPcMyK##%pK$&t0$s!)tAV89?A)I9CiBRfcbyO0Zr`^NGO5XC$Rbs?M8 z1eqo{`iw4E3TAVnKh7>gM83%x`cEc|w%6tos$vtWcx~;K;r0Lc<>YmZ$qH!q-$H3& z>*$N$g^?L$2RD`|t%0ZvO~IllE}lv4y5sLQ>UD zSt%|wZqE0A?FN}T%w_vX{D!)lu6Cp3iC)S!_>>0*ew=BEC@(7;*bQ1}^HlACzQsF8 z5pf2To~ykU)RKtZUh3FRVhj$##6!#g`WOB91(bnF#zy`|D0{bkbRv_y?_#FGBwD+Ef} zUp4yoRXq_r>4olilD~&X)FcrTFEYWgo2taB`KXvLi_B#{6jA;_g_5xAisCK{3JI}2 z<}|e*dZS6$Qy6pJd)Yr;{qv}(u8`{W8un0QoplbgBJWR7ItRsYIGLbJpO-rv7IZ* z2m?dI{kEqRYj0N36Zj8rFLbWLqV+dpIpzqzh6YX4(!v&^~)4x=H61Mhpn4A zlyG_aSK&}G=2c}~OG7>k2@c!{t2G@vsBk;`pE3V=X!>0vVe#=rGdly4yO^xSt@_5e1YL0 zS#|He8pRxbFa5!K?BOamCYwr0S>NZhg^r&rO?OazbQ7Bn>{?cJaJxV(y)&4>W7fXU zGiNzBT8laxFs?l9!F>1j;SYDG(bS#o!R>U8OfsXeF5)(G3)y-HTvGYQK(7$bx_d8h z^5-=!Z{zyUXyS%DdB3-C!_0x8IJ6LLRupnc3j6ocbL!Uxg-#M_&0|Loj#Z`i0>@DU zsq^n#FdU@d_k~UbEE~vrowjyh`Oe%3go3>~Z@)wh5u!-YVD9si-1Ti>%g78Cd=Prz zbT(?{m|bPq{5lhGXCeub!mGP#U%H#C5#!hx?{T}{KCL$ z>8wtLp{A+AEIgfh5-U^;FOMpfP)D_B!0O_!i&n2E>NXl{f#3Ra?LDDx=eZ-Skw!Fl zikMw^>gn6Jcx@5Ks?!N?YbYF5k^w9F=>)Y5+^-?RtDR#c)49)RG18yB{o8tS6Eco6 z!vJT%eA?C*Uq}~=a~PP;g7Upy;~{mOL=o{FpU(Y>zz2c%x-4R-0W)BmzP^*}x4j*E zG~)3sd&G71G?Il?q4BOG1xd9%Pc~ZdArXFYzL%QJrrwfbO!9}7;t>};Uf-sPOd?4PYcLeMbrL=Vv!obJEBsgBKu z7K;m?Hq9+~AyJVP?e>#bU7`c@$Dzw6IqShTtC#LudX`P^|g!y=A9rfe|4PmF!Se zPRs_l=!=}WRR|0P4YQS8Jb`92=KILH*P0mS+#4W-Qx10T)vQl5_x=bQ%_>C0DL#l9{F zcX*P6h8^t=b6W@6tRsor8p=$9?_~^1L>NX2^V7=x2^qvG!k+crs`E&b15l(O%zv&w za|5B1d%Thpo7}l2G1U$~Zj!I+8EP&WYAA0&ln@0vE5ZcPCUblqd^XAxso_u#S{$37 zw~ExOi9@`d3}CJLzDt#?EPMQ-&}L`hFg1xcapP&rhTHmm;0ov`<+-Z$9nH7*=?$Dr$)wql?n) z6vs#X!nbO#So5>{=@q;g-VRAcl8-NYB=1)>>rp5`F5mb>#$R-sf874tLXZaM#gQa~ z%O#jfs57mWZ{fLY2=KivOWBDoCN8o2RVDR?5lo}2MPFifk>`N+r6-V(sq7`1rW`p8 z_k&=dnW`8>VKw3u{}s6eHAqf@FuX-2-u9?f@m0v}4w#QXPa-gqy(E#>fkI%z4rt;! z(YP^{n-3AkXD>^fX!IRz3LagN!b+O_99&9^V}e;rE^cA-Z^Ya~>b}X*OXVsQDtcZ?R2fK`<^|l}ODHHYQqEm;IYJW@o+4uWgt=jhteEQ^ z!q$eK=5m^fCXDALI)W3N-)gmpA|9CwX}v0az6vp5r8{E15|f6=s*XXI1c`$Tv$yD*i>BsQv=I#)%u&X{#Fm5Jc%Z1VJ=`N-BZ-IjhKRjK`826QUP& z$I3O(gBtdAUxk^$NSn6Tsh5jXW|Sl*ZJXTzUd(7uU6e)AY9Oo>I1XeabwOV+H|Wmq z`<73{Arhr^?n(o8k{qj9y#^UUA~2qsg{mpGl**c>Z#hKVH0?(BvLiuyL~4XMpHJ%T zzQqzP`#~4Ce0XcKbV!M6FH^hBpfsbLx?VLrBfb}iIQ2w~-35Zka{1rgorld)zD5=o z{$Ql3X_RU7muA#xw^P}+gggSH{(bwk-Q%DisgJ|~fN`uwVV4*;g1OO( z36d6uo~V(%wqrSSU{=nh$i=IYrG3gZskQr+G25sQN}_&NrG2Cd6Q?y0>yfU9xAFcbOV-At2np2Hdr#l@tQ>D-T7UBp?$ic4;q#rCQe zKxWpqpDGs)WU1Su5zr-f>lYAfwvu_59&XdN@X?rlu<^t%>dm_pjDai-9hW=XZO#s4 zo&@*h8ceQ=;(#-}nNEjy?tdqwx*k2rI(ROJP}xWpbG+P8p2qhfcwJ-XGt&d>f-r*F zna@B{;(pOS4x=03oG)H~+=dk+cbuNY#pRLr1>WvZ*)A+S%mInCq`GFW?v9W7b#@c2 zm}7G#)5~$Wy1J^?8Ys2eA6z==FXMw+`pBD_{R@RhJPxGV%tL+W5o@VUYK?XkH8jR}zEr~n0%daAG z7fdQihR9Z}*-D zk%>ki1eOP1{yNcU623Y5-lvKNSDE@Q(nx_8%ue0aigfJJU~W=aQHJB?E9*8PAcRbS ziqf-fYPTmeV6!nqgadp^?@IM)os&G!y!WgG2^`kgwi1{PpJf1=jJiAjg&PoQu7AL) zA^Bl8Q1B|T!Ul4&Y3~2$98+C4-Zao*ktHga{);KQW5-EM9K$}%<6%+X2MW3S&B7Uk z!`$|h@_plpoAt?so9wmCc-NawuB$)AyZ!OG<;a5MBhXL4~<)&ZPX zvAx7Ey})frb?eM+B6QF6 zUc*tFUrx{=yJ}~#W#p=B>re1-U`f*6{PwL>%YlBQ?-byov*4!7aaZ85YrRnO;hgB> zO$*ns;O$h`Yc;Cbrg`AST;Dz9V#w=bexi5{T$u=dJbr1(YfSOeKZ-Setsyq|>@tAe ze&eL?rS>wDjHE|?P^km1mOvod*^F|Od(Mbd=0GHdRZd$bYF1Xg|pFX()6 zrJ(o3#2WOg6v%f-PNtyEsD8CDJr#w|ZJ(L!8RkHtl}NPp5$LFX3T>T>qLv=N~ra9cOr z(OQvM_5OG@b>Z}WFl1fleV~uq0d_4Fjog0&+hG4c!RQxC`$a^o5rS!9hJ z0ToZD$WZYC@$uN`&!KKirf$F%#xI61+j3|%1+MyH3_T}q*!3aJ4Ay_!_7{_82TG}@ z%O1pAXW=RfH38$AURiGyE*5VxGhO|?%*lHpNY+nR|C8L|d|YZ#SknXmRisGifjwn7d}SV979WxGju$bW_fWDEa9e!|D!^>ovc0@5 zek;=u=Xcv6*WhfL9po#sitCiVT*w+_)DAD8BzWWZlDx#rqdKL6v`$-b5p zCsccL$?ts3q2VJ=ABp8F%=Q@~Y*so&MtVAETrhQGJ;sye)yVKQe~e^#LOqM!s*D;F ziewQ#pYI~SR@R~X!iJ68F3(>RM^~z`AvUo!2P^oT^JKr&xV*R(=hs&jas(I?CotrR zk2mg?RCZR4*!4IqG=b3ik9F7NXEJA4mfRqxyBLF7{1cw^(}s8v-}l}hkeg8;?hrGro4 zlUMZIViL-imD+^0%02g7mEvcUpjM1$efnDOi|EjiGNJ>L<7Mx1CjLWb_A2>&06y}b i|InRE7=sU(FQfl<#26n;BmdF@0KQR^ua Date: Wed, 15 Jul 2020 15:58:53 -0700 Subject: [PATCH 4/5] Make google-play optional --- .../geeksville/mesh/service/MeshService.kt | 4 +- .../geeksville/mesh/ui/SettingsFragment.kt | 69 ++++++++++--------- geeksville-androidlib | 2 +- 3 files changed, 41 insertions(+), 34 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt index ed94684bb..819f9b592 100644 --- a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt +++ b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt @@ -22,6 +22,7 @@ import com.geeksville.analytics.DataPair import com.geeksville.android.GeeksvilleApplication import com.geeksville.android.Logging import com.geeksville.android.ServiceClient +import com.geeksville.android.isGooglePlayAvailable import com.geeksville.concurrent.handledLaunch import com.geeksville.mesh.* import com.geeksville.mesh.MeshProtos.MeshPacket @@ -242,7 +243,8 @@ class MeshService : Service(), Logging { @SuppressLint("MissingPermission") @UiThread private fun startLocationRequests() { - if (fusedLocationClient == null) { + // FIXME - currently we don't support location reading without google play + if (fusedLocationClient == null && isGooglePlayAvailable(this)) { GeeksvilleApplication.analytics.track("location_start") // Figure out how many users needed to use the phone GPS val request = LocationRequest.create().apply { diff --git a/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt index e5c158f85..c96cd66a3 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/SettingsFragment.kt @@ -30,6 +30,7 @@ import androidx.lifecycle.Observer import com.geeksville.android.GeeksvilleApplication import com.geeksville.android.Logging import com.geeksville.android.hideKeyboard +import com.geeksville.android.isGooglePlayAvailable import com.geeksville.concurrent.handledLaunch import com.geeksville.mesh.MainActivity import com.geeksville.mesh.R @@ -687,8 +688,9 @@ class SettingsFragment : ScreenFragment("Settings"), Logging { // To skip filtering based on name and supported feature flags (UUIDs), // don't include calls to setNamePattern() and addServiceUuid(), // respectively. This example uses Bluetooth. + // We only look for Mesh (rather than the full name) because NRF52 uses a very short name val deviceFilter: BluetoothDeviceFilter = BluetoothDeviceFilter.Builder() - .setNamePattern(Pattern.compile("Meshtastic_.*")) + .setNamePattern(Pattern.compile("Mesh.*")) // .addServiceUuid(ParcelUuid(RadioInterfaceService.BTM_SERVICE_UUID), null) .build() @@ -768,45 +770,48 @@ class SettingsFragment : ScreenFragment("Settings"), Logging { * If the user has not turned on location access throw up a toast warning */ private fun checkLocationEnabled() { - // We do this painful process because LocationManager.isEnabled is only SDK28 or latet - val builder = LocationSettingsRequest.Builder() - builder.setNeedBle(true) + // If they don't have google play FIXME for now we don't check for location access + if (isGooglePlayAvailable(requireContext())) { + // We do this painful process because LocationManager.isEnabled is only SDK28 or latet + val builder = LocationSettingsRequest.Builder() + builder.setNeedBle(true) - val request = LocationRequest.create().apply { - priority = LocationRequest.PRIORITY_HIGH_ACCURACY - } - builder.addLocationRequest(request) // Make sure we are granted high accuracy permission + val request = LocationRequest.create().apply { + priority = LocationRequest.PRIORITY_HIGH_ACCURACY + } + builder.addLocationRequest(request) // Make sure we are granted high accuracy permission - val locationSettingsResponse = LocationServices.getSettingsClient(requireActivity()) - .checkLocationSettings(builder.build()) + val locationSettingsResponse = LocationServices.getSettingsClient(requireActivity()) + .checkLocationSettings(builder.build()) - locationSettingsResponse.addOnSuccessListener { - debug("We have location access") - } + locationSettingsResponse.addOnSuccessListener { + debug("We have location access") + } - locationSettingsResponse.addOnFailureListener { exception -> - errormsg("Failed to get location access") - // We always show the toast regardless of what type of exception we receive. Because even non - // resolvable api exceptions mean user still needs to fix something. - - ///if (exception is ResolvableApiException) { + locationSettingsResponse.addOnFailureListener { exception -> + errormsg("Failed to get location access") + // We always show the toast regardless of what type of exception we receive. Because even non + // resolvable api exceptions mean user still needs to fix something. - // Location settings are not satisfied, but this can be fixed - // by showing the user a dialog. + ///if (exception is ResolvableApiException) { - // Show the dialog by calling startResolutionForResult(), - // and check the result in onActivityResult(). - // exception.startResolutionForResult(this@MainActivity, REQUEST_CHECK_SETTINGS) + // Location settings are not satisfied, but this can be fixed + // by showing the user a dialog. - // For now just punt and show a dialog - Toast.makeText( - requireContext(), - getString(R.string.location_disabled_warning), - Toast.LENGTH_SHORT - ).show() + // Show the dialog by calling startResolutionForResult(), + // and check the result in onActivityResult(). + // exception.startResolutionForResult(this@MainActivity, REQUEST_CHECK_SETTINGS) - //} else - // Exceptions.report(exception) + // For now just punt and show a dialog + Toast.makeText( + requireContext(), + getString(R.string.location_disabled_warning), + Toast.LENGTH_SHORT + ).show() + + //} else + // Exceptions.report(exception) + } } } diff --git a/geeksville-androidlib b/geeksville-androidlib index ab381a83f..cfe31d66e 160000 --- a/geeksville-androidlib +++ b/geeksville-androidlib @@ -1 +1 @@ -Subproject commit ab381a83f5380358fa8412a58635e390c3729192 +Subproject commit cfe31d66e4de324fa91a2978a76ffcfba5e01085 From 4d9fb32fa1f05d211598a480e7a11dedf9815db3 Mon Sep 17 00:00:00 2001 From: geeksville Date: Wed, 15 Jul 2020 15:59:11 -0700 Subject: [PATCH 5/5] Mangosauce fixes for Chinese! --- app/src/main/res/values-zh/strings.xml | 46 +++++++++++++++++++------- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 324354353..cd8c689a2 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -3,40 +3,40 @@ Mesh网络 设置 频道名称 - 频道选项 + 频道设置 分享 QR码 未设置 连接状态 应用图标 - 未知用户名 + 未知用户 用户头像 在吗?我找到了快递,它就在一只大老虎旁边,我好害怕😨! 在此发送信息 - Mesh设备未与此手机配对,请配对设备并设置好您的用户名.\n\n此开源应用程序正在进行alpha测试,如果您发现问题,请在我们的网站中发布.\n\n更多信息,请访问此网页 - www.meshtastic.org. + 设备未配对,请配对设备并设置好用户名.\n\n此开源应用为测试版,若您发现任何问题可以在下面的网站中发布.\n\n更多信息,请访问此网页 - www.meshtastic.org. 用户名未设置 用户名 - 匿名使用情况统计信息和崩溃报告. + 匿名上传崩溃报告. Mesh设备扫描中... + Meshtastic_ac23 + Meshtastic_1267 此应用程序需要蓝牙权限.请在Android设置中授予权限. - 错误:此应用需要蓝牙 + 未开启蓝牙 开始配对 配对失败 用于连接Mesh网络的URL 接受 取消 修改频道 - 您确定要修改通信频道吗?这将会使你与其他节点断开通信. + 您确定要修改通信频道?这将会使你与其他节点断开通信. 收到新的频道URL 您是否要切换到\'%s\'频道? - 您已禁用了分析功能,但是我们的地图提供商(mapbox)要求对其进行分析\'free\' 因此,这将会关闭地图视图.\n\n - 如果您想看地图, 你将\'需要在设置中打开分析功能(此外,暂时可能需要强制重新启动应用)\n\n - 如果您想切换到其他地图提供商,请在meshtastic.discourse.group中发布 + 您已禁用了分析功能,但是我们的地图提供商(mapbox)要求对其进行分析\'free\' 因此,这将会关闭地图视图.\n\n如果您想看地图, 你将\'需要在“设置”中打开匿名统计(同时你需要重启应用)\n\n如果您想切换到其他地图类形,请在meshtastic.discourse.group中发布 缺少必需的权限,Mesh网络将无法正常工作,请在应用程序设置中启用. - LoRa模块正处于休眠之中,您暂时无法更改频道 + 模块正处于休眠之中,无法更改频道 反馈BUG 反馈一个BUG - 您确定要报告错误吗?报告后,请发布在meshtastic.discourse.group中,以便我们将您的报告与您找到的内容进行匹配. + 您确定要报告错误吗?报告后,请发布在网站中,以便将您的报告与您找到的内容进行匹配. 报告 选择LoRa模块 您目前已与LoRa模块配对%s @@ -45,5 +45,27 @@ 请在Android设置中配对设备. 配对成功,服务以启动 配对失败,请再次选择 - 位置访问已禁用,将无法为Mesh设备提供位置. + 位置访问已被禁用,这将无法为设备提供位置服务. + 分享 + 已断开连接 + 设备休眠中 + 连接状态:%s到%s设备在线 + 节点列表 + 更新设备固件 + 已连接设备 + 手机已连接到 (%s) + 未连接,请选择设备 + 已连接,设备休眠中 + 更新到%s + 应用程序版本过旧 + 您需要在Google Play商店(或Github)上更新此应用程序,现在您无法与这台Mesh设备通信. + 无选择(默认) + 短距离(传输快速) + 中等范围(传输较快) + 较大范围(传输较慢) + 超长距离(传输缓慢) + 无法识别 + Mesh服务通知 + 您需要在设置中启用位置服务 + 关于 \ No newline at end of file