From f978f55e7f4ae325a7ea0ee978ce90c988244b1b Mon Sep 17 00:00:00 2001 From: albexk Date: Tue, 6 Aug 2024 12:41:44 +0300 Subject: [PATCH] Android TV (#933) * Disable touchscreen requirement * Add Android TV feature * Add Android TV draft banner * Add Android TV check method --- client/android/AndroidManifest.xml | 5 +++++ .../android/res/mipmap-anydpi-v26/ic_banner.xml | 5 +++++ client/android/res/mipmap-xhdpi/ic_banner.png | Bin 0 -> 10894 bytes .../res/mipmap-xhdpi/ic_banner_foreground.png | Bin 0 -> 12414 bytes .../android/res/values/ic_banner_background.xml | 4 ++++ .../src/org/amnezia/vpn/AmneziaActivity.kt | 5 +++++ client/platforms/android/android_controller.cpp | 5 +++++ client/platforms/android/android_controller.h | 1 + 8 files changed, 25 insertions(+) create mode 100644 client/android/res/mipmap-anydpi-v26/ic_banner.xml create mode 100644 client/android/res/mipmap-xhdpi/ic_banner.png create mode 100644 client/android/res/mipmap-xhdpi/ic_banner_foreground.png create mode 100644 client/android/res/values/ic_banner_background.xml diff --git a/client/android/AndroidManifest.xml b/client/android/AndroidManifest.xml index f1d2682b..3276eaa8 100644 --- a/client/android/AndroidManifest.xml +++ b/client/android/AndroidManifest.xml @@ -11,6 +11,9 @@ + + + @@ -31,6 +34,7 @@ android:label="-- %%INSERT_APP_NAME%% --" android:icon="@mipmap/icon" android:roundIcon="@mipmap/icon_round" + android:banner="@mipmap/ic_banner" android:theme="@style/NoActionBar" android:fullBackupContent="@xml/backup_content" android:dataExtractionRules="@xml/data_extraction_rules" @@ -47,6 +51,7 @@ + diff --git a/client/android/res/mipmap-anydpi-v26/ic_banner.xml b/client/android/res/mipmap-anydpi-v26/ic_banner.xml new file mode 100644 index 00000000..cf3108b3 --- /dev/null +++ b/client/android/res/mipmap-anydpi-v26/ic_banner.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/client/android/res/mipmap-xhdpi/ic_banner.png b/client/android/res/mipmap-xhdpi/ic_banner.png new file mode 100644 index 0000000000000000000000000000000000000000..f5029b23481e0eab8883a8131d8bc24585f89ded GIT binary patch literal 10894 zcmc(FRa9GT&~C6&C=M-7XrZK7A;pT*(&Fw?2vXdNyA+o|Xem7L*nth=IN8i=f?U4 zDFDExDf{VzhKJz+0tKPaUVL(l0?HQ3Yeoj((9Tt&p15gn1Tbcrd?2j*6y0k2fg)No z0n|sV zwKipIX7e9@gSFIK*Z>>(rJy*7xM``Ery{`1&<!@(B79Rsc!0G_RmrUrgJJmoy z1Iw9GX3r+!N(|gr+_i=|uHJX*Dno69*AY0fwX(OxWvA}kgNg)eJ!hZ{I2|zLY06Wo zz-ElFo6uY6;|V_knhxtSPz0<-7*rR|mk@U_FrA*%nPFlpGq+_xD z&3uU+rv&nMat%kwIYW#DRWZNK&o^)LzmgQ7_p@VcLqWlcwK$m|caLyAm%XT7kVA16 zXz)u5#`n&bYSd%BSoze|1q+xeVqj5ng9qC8MJh$th`25ohlm?agn^grhDe5o2$ktH zSwL;kCFNwUAU-NJHc*+%VZ_a~j;gX0w5G>sT4nuI;`-}3FE2t9F?VA*p93^M6k)+h z54R3$w5iMTEI6z!6;$Y1>rQf{76KIUFtK{R>4Pss2HF9QJO8q)%?X|!N>hRz(Qm(U z=mhn$M^>1P=r@>&G3PlfXRnIGMkFPNzkHSGZ4J)z~vP<;L{h z_QPe3wVuCDZ0mv}#cJ^-PWMZ2=c>FoY1nH&j8Tg*F@XA@1Kb$flq3P+ebM7y+l){j z2kK4wCdQDt6dm1590u_#Lwt#m17}LGZHEN*mG@vv;A*AGu*cG4S`BESed060Az?4G zRV7^*G9p%N5>4;IgjK$6zJHO?{u(EV{YwK{24AcdByeP8ykZ+1<|!AaBVrGwjvB%m zCof0y?JPeREl}!7`gxJ$bn`SH^4aUH@r9D^58I{G=1-a6l4r)v2on2{gOkr;PP1;a{6x({m!7|&SXg26^**{ z83~PA99D7f+MgtF12>>IuJ}e}vL5lr_|5x=2nr9cqc88HUT=-4>o>~pSfEZ8-A8d5 zJx~4#mm1VycYgRVfz%T1F&#((dwd3{O$vA;an=4sn8(LAmSF{#s-(7FJoOj-AzA*) zU&IIcQ`2Ug4NUs7vvXR+Tty@SN*yGRd0bY%9O$E_N$ejtaca5Pf zv#2;k8g8_l_3mOTnzFrXGE7`%MT;86Wzd_xN|sAR#f&aH1OfH?T7EynR1t|-g7sa6 ze3D}1W~MT5uI4`22ea;fEjTuu*W@dFkwkhH=Z@n-YU|kH#-r5(B+D!8*5%R+H7cF0^l@Kk)3k?aC^KZV5=uZS6Y3^ah3W
{(^Y>hJ$V`!S>gTjiq&|mS|j= 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 b2P}etnJ+)-G=DtmOaZc=l|Ge!Gz$D5{j`8} literal 0 HcmV?d00001 diff --git a/client/android/res/mipmap-xhdpi/ic_banner_foreground.png b/client/android/res/mipmap-xhdpi/ic_banner_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..1c21902ec06a1849c6bf83b934cc6dca4fbe444e GIT binary patch literal 12414 zcmcJ01yft!*EN(PgurYRcRV#qOE4en zS8_?bSIBfgg84r|j+`0L?{d+7z%OF2Lpk=B-F(VqgtUZ;6EjHV=I{L1UdZ;U4)*sC z?yIYqyUx&HV8H+Pi_mM;?`FmGr9(FHeE?eMJIp!23q?f!Ojl>;ysxkC$xvYaz{FAo zIs=~Mu#-g&*KHfR$P7d6Hu>0I&aLxHe;C$_-lKWA8Bpay8w%Z{!X#q4RDskGLqBPp zx(Nj2^-hpgn0P3%l^40KGyoa=hY2-lG|k%4+KJCLf#GI`V+O*)!e}*-+)^~4SpIOI zG7H_jX^mOe+1HvVH55J@+|SCL&~USiobzjelgWjS_8oDyMxrYciUwZZ~O_H z3AOqxIiFJNj2<}<1sgvVfON{%9MS5=Y=_0|Z)r_6=k*^_h3DgM;#vU1r{GGEP7yPW z?;k+JuV#sy7rI9-nto!i7Zb0aR5|R6dTTsR0bqnKkB^VfSg}RI^I6)PyEGJBzfOF@ zdmLE<=F8WZo&&3>^EHhpKV*g6e z$ckI-0mBRk@yIc+%;5!}y0q6V&Qtq^Dhwdwctk9#B;jTOFw>0}viT7Hja^%3Tu-Nz zT6Nr^8va+2j1PtKp+D4HBcytsAgj@Fw|5`UggF2gOPj1Ld-xR|6}$Z5>z}0-oKXno z^R;IKCLxT1>6chcsId(UD>P?i9DwAByJ3;%GZEdN7T*#~U=!*5bnEzY(MOKly#qw( zy?Yi(n_Ef7rf#>dst8t?&z=$gQ1L$Lx_NdY9Z*Ec7z{a4a%s^a%I#W7-vsGdeCn@^C?=gDw=Vrs9t2R%gE#!tMZYx!<)Z zG%L?j?-VSfhlU94tw!Bsn`H>TBA)Fjq|*qVV;pE>3!TECDx+-5S}ReqF}?0Sp*EWW zF*;Gs5`^}F$Fhg9I2BhzG3o5WJt>Vlslg?{7-Mf;j-E)eifd1t9r9KTu5NzRcV-*v zkAe&bvPHh5bU(q~sCHR;cJ$sw*>Mun$5>$B7pV*hag>~{lUI=aMRb67 z{YPDuOLS|_j}fGF&Y~2QLY)`TMxE*^C4Jav{RBf9JyXDr`Y9G5X?ja-sw=MCm)#lx z0eNso1!w2Hk0L%V3juq&HFy5>nN+s-<8akdH7rIWN@9-~)e|r-Vn7Uoh}lbB1H7Fo zqVwJ}X@-9z>q&}Hss0jXpE74Y(B!S_$qIk%-2j1kz0E3J&mBhNi!R!(i;_wUw;NmR z&F~PQg%L_Gi#b=8}4t^Y;baRa3iO*?=8~ zU4Q)}w>`IsF#DNwHEFXbp27E#RGZE4H5I!N4&%iR>}zmnfq2`eb&JtCDJ@4y?>@H( z(jk;dd0L3xngH(2ZQ9o=41yNQgcw%(Melo%;L{mSXX{n6)b;BG^zB&4QBg_(k6GM{rG6VAopwZQ_(C<`a8IEdn|I&u}L=? zGYLz`xh~l#4a|l?#hfvIK+ys?glfuK%uuUWu5tTGNw~WkPrI9ZcJETyJ)4t^&Qah) z=AT38YG1U=#Ukr3B(2<~Kp=mMJ#Kf|vWd>*Nay@}XV@=r-O!TYj73;WM0x{>m1OZ5 zE_QIkC#%AZAg^1~DRSWH{%}I8C&{Rwi#8`%XK%9YFzL+p3Z8iZ_W$RFf&J@>j-xBB zVD5)^83wHNE&Bx}Ws`e{?w(*7rV^RNMWRH3&cR#Yw_U8;)5!(xSiU9_Yl>Ft%yj0a zSJ{0x9$9@wJf&q~V^wn{ht~~x8pe@#!(c_6!rYP0F*0Ce*cc7x{jKO#+>zOzI>*zE zzIulkmAOBmb^Di-Gky+e`M1aDUUe2e`a%yJ6ywJtuWPfp(M{G2S6q)FN3HZbG%)br zFV}UYM`T@Y-}VivtUZ7Y-no`O`bzv>lALThb|b%Ddg0kWy85o&AC^56Cd=zD1q2y> zSASS^(;HO@H~WrET!L9)z#leB!-;w;k$xwa04?7sx4RG4NV08HXO1@vMpuS}YOQp5 z5lQ372dx(vlBp{BvbsfJz_tjhp1i%i9VZzLDe<}e?L7|xk?7qi0F~-^oTJbZl%3Mr z<4{AJZHJ4it*$MoC?=ZS4?)jN?0j>V6vJlIKSF=^q*HVQ z_Se?ZMp*^gKW)8sP?QT}J6cT-s1^wGZcSRivCMD?2`l3yF0e5V{!|W)F;P7OpJHKt z84A7ctMC_~ZA@+^DDZ*g%Bt1Q zT5h&E;z5^MAH^(Yqw=cL25<(LQ!NvXJ}ZYt=;aJ2=h=?k-O<9n&WZSlCP~zr*_sCi z1}W0bn0#xHG7aG&o$J5cNzv)n6oG;^L z79%z{<0b=-)<9{L`DZ2{--c_Mt}e$Ry8eo%jt|8%1hH>QaFT+G?iChV_C>@wIqhR{ zvU?U6-&ZV(m)NN54EtHm;2)m=Bj}-n-D5ihTRX%XhOx*`9?$m47ZbrzSEl~Af;yNvd zTeXY?*GloLrsmv#3YqH@LvhhdRi_lJDa zWZ^wl_Zq|myBwnZ+Pj3f4{I|R)W=Qhz0Z@;y3@Z(-To)VMH8#nf)bS;nKYdM#n(EZ z(1uTgg4S|+3Rwa~qsda3jilv^>8Xn2zk^0A5zttB)VZ-MvK(%rlGDf`GJT=3)F7Ah zszWC}{IgQEglQ1_m)G~=+4_m#Miq)b9A!K?z_%DJ!>Ej9GVKEIFg_RIf3Ds^q5Vb& zoopi(;CGT7@UsE#V3*#sARh!P_qj%A#RK1y=H}fy%7$`!*eUEc7df&U4C03AJ&Y^t z$Q13=XAEV{n+BDwJm{@aunD`rIX3=?>*4JKCw7P0_smz8+f8Y$FV){zflTj}9PW$m zD1LDF*bHCyR%2Cf%y}}``uMq13a;|tg1NSrspQ(abF7X2G zH8|Et!~4qci4)%NhYhhZ>9-SJF16}&3aEvOti|l;C~)wek?Y@~hcO7W>nS;l@c8!d z;&SysR1&M_7S8}NN!!eQGKZdwGpjuLkMU#EI=0bCrMGdC;fstsXnEx(!8$i={nZcU z>vJpc)6EC?>ESPeDEw!iE$U9emerw0*$G?~8Tg?MPcQ4)>8T0rx^UK7sai0&{abz8 zkWE6*j9iy^Y*{BUSH2l0q_D6s@bvtgzfc2e$YwXhBe$2o-O(fVN07~+r!K`qI_14;Bs)+Q3`2LX-9@(9n^U=4r9uKDWM<;Un1~pfxu=%`aRqo|8svw6w z;C6Gy3qYel?1DKa3|^@m?Aj(SpB5CXS99|5(+N(+N^LaEGeDnv?~f5j&))*N{FZD%RJ@1QeuN#l;)J$|}d9%xe<)PAlKJz5XsNyv|-2Pr^=cw_)#W zw_LjP_Yg+SJIPJZdsrez_uSPEC9Qp;=KOPa;vqiq-#Lrpg|tjG6zz{}c|)sIEZTrV zcsUVvq%DtNpY26)A?wp_O$ccRTW<=h&Dc=69ZU|oTpF*jvwd=c+rbmSM7kcmwBO)s z0Qy2SL*+xmMBPiZ>H8yMxCQ6u&doZov;8bn^T9X3g-LK_eog;D!DQ}@bPEgSP|inB zipsG6D*{SRk%p>a-TK=NycT{bPNCZNQH79#(@k}KUnb)!L4ZN0gzfoa29@2wv=N@( zw2)|e&Tl)3L3_q&g;Ph3G*mI4Y zh%ZT@KreUNvR zps9T;y!4v3T3W&OC~{n{TnQK0vD0c9P-0A=@hyDs@tJ%K#1q2xfGc+InZ9v$MOBL? zyW?@49gC->9YCThSi|5R~&ePv81Y(@%n z7Jf|DDbWD=S_Nth1@YO)mtNltg4Ujjptwu{Rtu0e~_69Wwm+#hM3_QE6? z9hWkt-}i3p>ET8o+Kdl%VlL)9!u@Phs{8^2{$j#SVXWgg<{Ii_r~+&mTj}t$e}24} zII){3kI33t?ec9}^h#Ujx-O$r65oTqbX1fB$CtqvsH_3Zhdhs@nGEGz^bW!Skz7k)}0LAX||qQy>-xo zyuJ^dd|fmmBdR+^Z53BP1r6GK7vN%PjQ$HLza}yaT?1w+laG|~caek+auMc}IP`Dy z!b3ilNh^ucU9{l{InBKNSZeU9k+)yp?x)zYBtlKo|$># zgwRE~`bN7B?4rMX4WJ&HN}>XQl~@?+2w86+6)&Q{WHra~g>b91YUxTxzJ91o~%PlEntRA0_VS8XCzE2a|m$? zoIS|4qqXwkP>!)V=U!AFTsDX@?9>P5<=9>9j4ejo7>r2Vg(AXki{BP1$kOp2bit2l zG$vT9z;>HQdgH@h!#6>|VMt(2ly^~YE|`iK6kYIj6zX7V(Gm6Thp{w(`D5 z#&}}PpC-rEA_OQ@RoIdPbqPa4qa|cz-!N#`5T-DwQT|S;#NoCZ5_R||ySEUC%%YdU zVie!l9^ewD4j1V5ehb)Jd>s}3`VY6TRuZz)K1#d}1W|8sT9gtk6Q*!JVUy2cxCQ6b zIFy37f&rgZsT8+vHr*15QqZupSruP|d8(@;H<*CNnVajL!-C%DTZk#o40e2@DWFId zy|zmmF7Qg}L;v}T$H{Wrg@}1;x%cV1m~A`d+vl|J=B>nqq>s5kwxXfIwR_zf4(nm0 zH!(MnAd{LEyYY+WoweO2*Cr@7UOmkTX+e7W0x1F%)l-?YlSU<&tAZnKzbF0L!gY1M zK!7#Tn&&(BW6n42pR>zm(R_!;!jMtY{|=Dy_|>|z{+(KZSGqu9ycO!JcX$}QhFCM;q7ZTW~KXi2sE3dzuz^0`b+x0{2W(&Th&@rd78W1Qs#9I1Egx7@i zp)B+UQC1f^??Uz#Sh3M?li-y__IR;lq>hHo0xY#^-(c^~bhHBQ{Q<0YqLI znrM`YIEgXw?w_DYv+Uc8eUo;(!)Nf}{g)QTle3pKUCPmiO}9c?35y^?ou?KGB^WQd zdz}3h7bta1*+U;?pdX@2AFJKcWUIB81NEDv89=RVHwqx~eMB z9Y$9H6|AbL1d;!H>@-pLn!=oC7|g44q2YesVeE3yE*IPB}}2J-T{oTs*rDT}V&_rNoGd1vS zzmgDe+RmdGhFJ_k?{O~WVG$C_T_vj8Rh|y7gx0G88qtT0O4{m#&0A?uN*+w#bTA<9 zk3X?<#QdDh*b~YfM?0e8xc4{bO{73+x_n)|;4TAL@JlxjO0$TVgWnpBHJxEKA*aPu zRAl5JiXgnlkNWCW4pog|kuI%Q&%WkY`*bFR%oKBJ2NiGa?^1* zdgCpQ$f!O10QROK3%Zw@I=8A!xa(=G1~tR8kHZn4vbT}_#hNLO8Vi#OIYc=Wx37S2gaO$?7N*oM{M&neB_i{O z?tG-egJD2gd+av>L@+K$vvC(4!$u6Ud5)@J&-}mrwo1mK8N=u~qcnn9&Yz+Z?ARpPtp0eOFz=L9aUKkjDI*wz2L)Jo+H;nG^nS;`|y=1g?dWZ znu~<5p=9!NA+QV;>vj#YV4+dbyfuLIYgV(;_K1`^xM$x+L6B?)-7O-Xzi~H@M=^RH zDR<6a0R8~k&_-z@cdiKExC*GIWS>OSEp)el6r^TaODbt;`bB6VvZV7s3yzP^PeJe@ zx1uhlypW1jbpDnc*32xfDA>t!!M0(AMl-Xdq~@TDtsD-~dsxT@@JiUfhg+oSlVuQT);ono_@%JAP@MHWu46`; z1IRS$c2y-BqyiD$G`6n4V*ahdpGF0kRLZ4Bt5EwEYALVJT{VU47n3=nrB*ICmB6Xm ztw{r2a&h>P-JU59x97&Slkp5gdMV;xNb~owT?56P=pu{cbN0N@bO|;Rj{6A`GNpcU z`ZlXPC7iTx%iS4#aYB%bA6wsPL;B!(cWxysE2|1|-Ws_1)r!=sUQ3$$WM%U zvzX1?sT!g%2N*uqb~-^SDZ zl}pLgX3DVMGRX8eOeb(x;lFHHVWug~_eCB185(6E?f3|!9#sZP5USQlOW2M_xL7%{ z+@t`HRMcV3Pl&++Rc$AG$xfq}5uX+;OYOHgT9eqR9 z`IQEE-(Lex5xa^P)p)p2DnGmCEUz9ZwXs11hy=S9Bd;;bTyfBmu}pa5F6 z@Mk+OK{glr%SueH^EIn+c7RCfx6%8HYQs9Bto&zz!3C|%&0rUEF_~YFvLZFd$b%si zf%VAErR6<{9bjGjn=hxL3#6u+nkjY|;LrbbIsD>p$p!sx8#+NIHm8T`+={-23QlCy z#IjbZEnb2Gri9$zA0E9^0c#Rd}wH8xLr;SAmQgv$nIa#%&r~;jrpY<8?PrG z&4pR%`XTEk&+}qWv-Qe+!!=CMHb`iZP9khtsTcZlHH!1EnpcI0A0MkUr-;@Hh&S&o z$$@haEc734i15evcu}aW<48I+x`kPhgwj~1UnhdCzJ9&W+b`o`p`ij&Klgm2>sr~j z(j0-UEockIp?XwjQDWKAb1YNh02*3%d^VfRn9|z%xAmw50< zuSKLtK%-prLe>pn(rCm?ji5E4c{NF|P5-jHLD^lWC5wu2asqu?ng_Al*|`+fTOpoz z$3hNF&QT`9cIFf5e+KqeQ=y5wlFTEW=np*`wYrF577LQ(qip6`mxcehOHafFB($dU zS%g9q=sU&2+vqbe8=Cc^ZmNFJt&}f9^vouZY>5@6tz(Z!17yDPkk2Un{`oI4ZTc{{ z`4Y*|FNuqLZW%24p5~&f^nS&A0;y}IiMpzdprqPTw{A`zs?UtS z)X`PUCdd`^R`*}OB+hzDJva2j(Y(aekrw6<4Y6)C{Ubfr=J4glvLS;Gri3PI>gCDN zB_*N_)|0ax`)&ahP{GJYDJGC1ra34!88DLA-lA92 z$rTgjfb=eyHZ^a#YTJUkF4vm6S-Q(YN3`_&Sn0{m&8#K=cUu`Cu~P8AE+F!ekw!IS*a{?wk4!kLaD^^s z0qexOLVR|MI4lobWl-X&L;@aPt`Nh`o$$%)sP-q)@p7Amrw>KeiSGelEQexLNQD7)9HKJf7Xoqyg;D=eW6)#= zXA;L4O5>XMP0pNpoXliXnyt#VlP95&y)}RC%e@Aq8LfnIscPYmbqhLrXHp#lT7JWj zy_t7JMaBAZwt|ItkVWIj}L2V9g9w%=J(GPPs`CkvNWtERuevb0zOf$T)K))mfG$3e$;;z zZRcq&Sj$F_CVuhhT*xJYp?(lO2*FqDg7v?m4(d&vCTFGci?#4XTf&P$WLZ?CRIK_; zY!OlibG|&c4!F=CyO`Ouo7?&ELLbzGc#Xg5z zrkeJ|x8_;~4cdsu2qX0RkN#yLpBU&*N)36{U*I~1-0tQHU#tzvJ7Ev$?n*ajRbG3P zZPJlxt5}?FJDfja7^I!j515)7E4j_nzIrRo%dOaBEz{h~L*!Qg8sgh4xRw#>@x4bE zt;D2K>jxigGD5};ba|zVjrR#ba!u2itU6L%Ewu-< z;#W~862BUtR-&9&TTv&MP_?NlErUO`Z`5n+^snaShtUUdF`3X%&`V{{WQ{tMA`%i@ z_Om`oaLa=>BH}OCP_0YJGU`0BlV>gdS;v?piHtRP+roVmX?2d2*3yq7Ms3vlelC% zjpiM078F{6>BDn?A`u$9%hdWe--0tv05ED@1uk=BzB&yTLpuG`zf%F-ni7h@PWejw zs^Rc>T@?6GXCW)EE2Yy+SozT zGU~Im^mLu?2stSe8sM_MR|aNyH#c@8yG-5Obot-MxGw|a+@Gbzlh1f8B=3Q2p=KkVs z+oE#xkcLmK@9y4^urSDYU?wO?p_Csk*kfbu&?%s$r-oybmi_a1m&etj$-Rt0AHi=E zWSP>(wtBH3m&=){sK=H)07lJii6&%BT0aV(Gm})Ca9QE^FmswF|FuPKdp)YB`b}JF z->Uqku_JG%KQM=CHl@(~FH8>d(V>s4qZ zEWdB2<8_`l{I&Pb*87|@1N>QVpb3g$R>-$>__4g`TcDf8W6E~5BtoNpbM&Oj(M%)r z9TwVQQ>MnVrs7;CynGN}EH!;vH+}hs{qM53p=7yU$mO55v zf;41V>$iBj{QTsR#6oxzC)TywrS(9%ht9~ba^d;cGai_!OS4_}p1)4DKhR6qor~*! zv#gwZq|8_5CR+<5in{B%{rv9n{x7xHcYf(iD={)aqS+Bbw4GHB05_Mi1NwGsCP2cI z-AT9un&9Z?mBx15%R0ttXI3g%J2+MZ8ftIu+4szCNs}v&msMKOir8FvCm~n5Sq97L z#l-_Vq?eW-b;R*tx{{!T#keM8_4nY#JI4*pKfEpM4taC<^Q`13zC7#^HZ~eWu>S|i~e<6Jik;Q_&sb%@3{ViG}ASs3zB?wJoDOa5`>h3oJKJA z&T1?_{s$CI8{LnrX!iq}AwE-sg}#cce||v0CC(I>Jqa7OKgu4hG*rBD3`r0?R;uFg zN|CM0M-k2w^iQ9?3eLS3#s$Q)IHn6yWUPai&v$|+02e;M*dY;fG5Pb)7yt0IP*&>! z2FZ&I_wLg6dvj$WO66!z0%gjKx}&o`N+uIXDQW3Xc^j|?TD38Q z)RU8&9~j2k>wXCQ%q1m8Qj=OS54y~Hk7~8zmSzSd2}WgpWlyr;j+v)GNJI*tQn4)r zuCLx56-rjv6AKpTzmMIvHy%fC*Wv2h8|rRo?V|FVUZJ|i#%Qo}enI;4b=bQ3Dy%h& zu7bc;Ge%3$D(x?7q&c-9 zQ*op8>(@Ocf`y&<7tx5EFIIg|o+z-E)A>=)nju}O_0!oM&ZY(D<4S;uiSs^vn|ctP z6^c8j=zXnuPEOQ$$hqVweYn~3YvOi!-CMTEurm+I=8_5cqnV3;`h47ZOogq|39)U# zJ^K3X;&_Re&7TW(^!Q`i=4% zi^B~V?keJJab&?uJV4JMmb`5&ROqYXO>K<{15>_#|9SlgD)xc_MS&jTXIR&CuU2K`Kdbm^x&6NH&^sG8-I-wkQ*Q6z3MY<$3q z#t0whoN{Ly-#?rwp;CRGY%1867K_6EO#`9sH@wDAbnWS9%m1u0{E)hGS}t)q9KI?d z&l|O;FK_gL@1k1}R!Jj%-S(jUB&!@MTo1Dhzn|FYK$j0QbsLXGAR&r^jQ;ctoxVp66u(3}>XCTy2KFCTg(lL>4*O0}eXNLvQyhXm3w2 z5VpKdMDYkkS)_HTnu)IzA#rO#l!d?Q2PW=2&G=wopH972mkkk%#s*H%;Hz1ylgFpH z1Y-8q5dE*s-AQSc4uW;@W*IeSJkBsafQX9sE;~($y--wmde8zDDFwxoz*!5zbIl7| zqD$VdhkhWM(o9SGRzSIzq3m>!+TxvX;|dy3T!10%uFtdLeLm}9z z1d~wZ^<51LiSv{_qiv2^sKX}D)!7+GXCM3)7=DK292Oq_jI7iEuEMv&1WkR06eZt! z!HD=nJbOD|n+a3CZOqzT7?%3|En}dizya*N0qeQYy39Cr6G|6MRBuh7XZVFs; z`zDrF@0FnZpO?%FIyjDfMu1ZMGF<%hv44I4XMTUcKK^NnaHIeKzkaDavahT&5-Lk@ SS0UajK$4SEmaG#u4f%g&wd%tF literal 0 HcmV?d00001 diff --git a/client/android/res/values/ic_banner_background.xml b/client/android/res/values/ic_banner_background.xml new file mode 100644 index 00000000..fa6f91c7 --- /dev/null +++ b/client/android/res/values/ic_banner_background.xml @@ -0,0 +1,4 @@ + + + #1E1E1F + \ No newline at end of file diff --git a/client/android/src/org/amnezia/vpn/AmneziaActivity.kt b/client/android/src/org/amnezia/vpn/AmneziaActivity.kt index e3ed6d39..3caa0713 100644 --- a/client/android/src/org/amnezia/vpn/AmneziaActivity.kt +++ b/client/android/src/org/amnezia/vpn/AmneziaActivity.kt @@ -1,6 +1,7 @@ package org.amnezia.vpn import android.Manifest +import android.annotation.SuppressLint import android.app.AlertDialog import android.app.NotificationManager import android.content.BroadcastReceiver @@ -556,8 +557,12 @@ class AmneziaActivity : QtActivity() { } @Suppress("unused") + @SuppressLint("UnsupportedChromeOsCameraSystemFeature") fun isCameraPresent(): Boolean = applicationContext.packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA) + @Suppress("unused") + fun isOnTv(): Boolean = applicationContext.packageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK) + @Suppress("unused") fun startQrCodeReader() { Log.v(TAG, "Start camera") diff --git a/client/platforms/android/android_controller.cpp b/client/platforms/android/android_controller.cpp index be404a15..c9ee3cfd 100644 --- a/client/platforms/android/android_controller.cpp +++ b/client/platforms/android/android_controller.cpp @@ -179,6 +179,11 @@ bool AndroidController::isCameraPresent() return callActivityMethod("isCameraPresent", "()Z"); } +bool AndroidController::isOnTv() +{ + return callActivityMethod("isOnTv", "()Z"); +} + void AndroidController::startQrReaderActivity() { callActivityMethod("startQrCodeReader", "()V"); diff --git a/client/platforms/android/android_controller.h b/client/platforms/android/android_controller.h index d015dbe3..1041c31f 100644 --- a/client/platforms/android/android_controller.h +++ b/client/platforms/android/android_controller.h @@ -35,6 +35,7 @@ public: void saveFile(const QString &fileName, const QString &data); QString openFile(const QString &filter); bool isCameraPresent(); + bool isOnTv(); void startQrReaderActivity(); void setSaveLogs(bool enabled); void exportLogsFile(const QString &fileName);