From 19db8456c8b1a5f9fd16b675045dae5c212b89d1 Mon Sep 17 00:00:00 2001 From: casey langen Date: Sun, 26 Nov 2017 23:40:37 -0800 Subject: [PATCH] Fleshed out GaplessHeaderService (and DAO/DB friends). Tracks downloaded via realtime transcoder are now patched up after-the-fact, so subsequent plays are gapless. Also added a new, custom version of AndroidVideoCache that supports receiving response headers. --- src/musikdroid/app/build.gradle | 2 +- .../app/libs/videocache-2.8.0-clangen-3.aar | Bin 0 -> 55161 bytes .../app/libs/videocache-2.8.0-pre.aar | Bin 53884 -> 0 bytes .../io/casey/musikcube/remote/Application.kt | 11 +- .../remote/injection/AppComponent.kt | 3 + .../remote/injection/ServiceComponent.kt | 2 + .../service/gapless/GaplessHeaderService.kt | 109 +++++++++++++++++- .../remote/service/gapless/db/GaplessDao.java | 26 ++++- .../remote/service/gapless/db/GaplessDb.kt | 13 +++ .../remote/service/gapless/db/GaplessTrack.kt | 9 +- .../remote/service/playback/PlayerWrapper.kt | 12 +- .../playback/impl/streaming/StreamProxy.kt | 30 ++++- .../remote/service/system/SystemService.kt | 1 - .../remote/ui/shared/util/NetworkUtil.kt | 82 +++++-------- 14 files changed, 239 insertions(+), 61 deletions(-) create mode 100644 src/musikdroid/app/libs/videocache-2.8.0-clangen-3.aar delete mode 100644 src/musikdroid/app/libs/videocache-2.8.0-pre.aar diff --git a/src/musikdroid/app/build.gradle b/src/musikdroid/app/build.gradle index a53d16871..1cd753676 100644 --- a/src/musikdroid/app/build.gradle +++ b/src/musikdroid/app/build.gradle @@ -66,7 +66,7 @@ dependencies { implementation(name:'android-taskrunner-0.5', ext:'aar') - implementation(name:'videocache-2.8.0-pre', ext:'aar') + implementation(name:'videocache-2.8.0-clangen-3', ext:'aar') implementation 'org.slf4j:slf4j-android:1.7.21' implementation "android.arch.persistence.room:runtime:1.0.0" diff --git a/src/musikdroid/app/libs/videocache-2.8.0-clangen-3.aar b/src/musikdroid/app/libs/videocache-2.8.0-clangen-3.aar new file mode 100644 index 0000000000000000000000000000000000000000..9d86c4ee69179737b25b0a5fdead4b8058d29717 GIT binary patch literal 55161 zcmV(*K;FMlO9KQ7000OG01=6LOZhb>iOB!}09*k8022TJ06}hKa&Kv5O<`_nW@U49 zE_iKhZIC~Y!Y~ZQ_ey++$~(yc15mYPxc!!s*sa8rD9s<$DY}n;K@9>4y!pMKUt+hX zKR4Dln%D&2!A5*ROOTSKTt~p z1PTBE2nYZWqk2mY%AUNo(*OX)^8f$~0001EY+-YAWpgfSVRD?iV~{S}x-{ChZQHgz z+qS#kwr$()*|u%lnr+RtZTqf$B5uU}v)A{XJEH!Kil~TD`DEpjm7_{g1{4ep2nq@c z2ndK6=>I#YfzW|W>}?rMjqEI~U2TjQ-7HN3_9jLq763*OS4$gHQF}WxOLGPj8zX0D zHC1>Z$p7!v-;+QQi;75LKNCH~mLk+CG6m^q6#ye=Ef?gF6rDtJ&Pb;Qu&mQz zZaIaEzey%9J(|P~yTI>?5!?_sjO#IfI3IovG7@k6zFwhsLE|RJ_W{UtQEQ}!T|Li_ ztbx5Kl{x(e;)C&cdm}7UR!AH=Lj|_3+NjoZd0KjdX};ukp=Z$kmT^UjZ&PN_A0bZO zR_j~qhg0<$gTMt2W^LI6yxQ=ZrVuDB9^|G<%j+#lDm9X`PC9 zQoqFQm;=;5zo9|jICq41P$uMAAjt2i$0iAZIlXc}kr`2zuk96OAfeK!^0C5zfq;}i zfPfVLYsKk+kpFwdJzW68PEJOiqW_uxm!ik2>Zss}qkVhXH^DXSp)f#jItmT+NUdNk z4a+gnk#)8QQb~bzoBqDiqnQ3LjP$kI`6P5+TQK8?LZVwe&1|+CkOQzCB9rl-SYdY-cZO>~ zj6rr^v|uWh2Fs+iPHR|ZYuO|%nx4?wIqVp0oifLh+{i`W;1gwQ(Z9Xt(j|pJu|0`C zBe`3%P^Z}}2-T}#YnQn^wls07I=5R0(?yY~Ew$fTJ{NX-dp5~g)f;NXK@lifXqL=0 zdN)^%g<3s#wNuK)I--v1P8#XUeOOZbWYvFeQ`&0AMZ@y1MHFqD|7{yB9zmAgZOVzC zv%@Tw^e{Hn^_c)g)gC{K)*VA8n#VPhk*PL=PM@wJUSopKv3RI9lkHeJ zgVVODZV5MJTSmUhTy0fg`5S;N&}p+#X{n>OyeeC>7N>o{zOk;(|D_iCZmR}o4YP9B zvHJurx**DS`TT@dH*A--xrse)@HIN|ON{B_?YdjTa9 z$$Z$2PKp*r>p^SiPd=x9Kk>7fM0%Vt#%r1y6p|yP!Hf>XPdXT+t`C&h{gSMZC}oD| zAAt4-op>t%F&vpr@n%RE47+|?+_y2NXvWeG+xLzv&3GQ8!cM9xnR)J!h0-VaYXjy` z2j=i>NrUKS8NV>X?>via4;s7>3VzFY?027x@%wa>epP-`-RFK8Pn3BXnt#o5fl6Rh z1KiWn?ZkJt#9N)a;fVH^XAaFhvXj2X0IG$@30Ptl{=mGt!}dex9piu03;U*|Tm=jW z2m|Wh)QkTAM!i(*U7bw+t9&UdDJ&|YecP?p*r|u1&J!bqk!)0|9x9o*h$Yd(X6B0x zE$X?C!RU3l;2R0{`xhaSfkaY#0Dn^*bm-yBkdB7uI^S^by!~;PznL}Ikp$vs$PmV< zveX?SwOnD5Dl9Ib^A*Pt9WsGeV5?>=rzdcL0Q5~VP5I^_THDzpT|)Hk>V=6MBoI0; zK2M)BA=R0@oxoLKwpv3nVkeb+S$W1owRNW%j&s;(T*7tA?e(3=g_CrInLC=tf3$W> z3bUWC`Gz?S-FKQrcRkPd?;SU6p@6mW>^EN3a^BJlJ0PZnl;2b#C~+ zaKh(l)SP$3?~KF!JL<$ z5q&r3CI_zV(6NyUBDPhtYJ$J=i?oY#TLE9(i_>zBA)km6vLw7@Tx)`oT7D>@=U1C; z6zw5vDr|j}Bg7Hg@bUN`B4G~L)HzF$ox+VztXS?%h{0sjvLB%g-jw9*x^j`i$4O4I zm=I>3@OQvqCJ9~ndy-sU{aHJ1W0L9iQqZz$S^@OtWA;loBg29;F%5093 zykYV8_A+(PC8HN%$ZL2X@PBA(w`s}E`%i<#0{b_blKu-#|E;&W#>>eMF(HNSq_Ekk zeEX+e;u7zHbLP`1cUqE@VbnX}!|KZ7kz1qZCe-XA_Mgt~SxlKsC_Fs4zug1J3XZ z>T>G(AnS1~ew29@nXuNq?n&=keP$o*zd9F=N5fJl#Lg(4JND5+oH-_S(Vso9Qa0B% zJ@6+RZAtLLIL=h>s7|I*=i&GE1*Zz{H&$0(K5~8wof2nr?XyK_zG#JVA_WSE!zH?m zLv`UdzJy;M1fZWBb%huG&r^SXq7r@epBo4MH#lkkPjJdwI=cYu08ak}R^BK3RRIVH z2onf-HwZU32m}d;z)!xD;lmi!vBu%)?BU{URS5`m_`K@jMzODHAK$j=Y*lM0MoMNz zJ;C;3Dptm=zbdRTiGj3Sea%$d=*1z4!caC53TBSKtn{rC38WxNgRPwWYW<{*_08NY ztC) zm_Zyb|DUyv0R0;hWdDZ5zghJhRonl_o}b-nk4sf>AfqfeB`Dre2~{t0i~$qO#Bj(N z%9ncQRJ-Ee;;mOXzop@@@<_pcLIB@OT3~R%A3FY%$3wnZ&+DeF@6V?z$N)g~q0xSB zAcz&q^rYbg6Xj4h94t89;2&dZM9`NekAxAH;60veh8>uHB&VVG1dpc`>N0)spbD-8 ze=_S2u>XiJ0Z$H*sb*!@K;V{>Ps7d=-iKndM?RMgcXfg zHsLd3`q`vSRKTWS5X2a|t*GSOSa4m?N#eO zeWwDPJ|2Rpkz0mM9)?evMou0^O`5_1VslySg7z@f2+#OsJV$vznvRVvR(xVoT98EB zCcR>s)#S&6+B!|jUDb~4X@MDqpw-?&ZnFWi;{xF`c0 zT>;K6|E;a7TWX-1qxtDWO`GCrfkY6Ew1*4H)|9AWpfi)8frJIb%D75FU|~}@vJ_}q zYjmyFx+!(p``s`7g~@i3|LFNC{uxNyc4t9a5(;(Re(HS@cH(0qwWjOqh#E zMv>pchEC<8--AQrtdV#{Ix&atRR)iN!9rzb5Duakh;0I)AWOMjwL3+jFuJu(LZk*h zd9`r@x2)|?N*G89F=w6$e?Z9{3M~XbiI?GH+%1g26zirkB3&TS-^bC%xP!?vKzIB# zY^^(WL9&f>OCbsuc4_GrBCG>!p>q*q}bZO{Lu)8g;KR-+A99WE?IU0OoTa}~#m)@B)I zc4bn2&;QzO^m|}AL$(~Qq$jf=j5V3G5?f8eB{fTC6x~;onZ4H?L2so!&1~&2u7W%S zYE*%osS7z*3ArjtTzu64!*W#l35(TV5{IA+J(QT@V27*xl3~jCl$4r;Q_Ne83U)Q} zfw^qQR1 zMDa&EI4h!X2rfG1VE2c#rUoynpbE6dO;!Vp{OFpp$y6&I=y> zvDApN>U+AUYLAFIi;Yg?F|bN3Wo(EUCS&5NY27Z8HqhoH?DFmjl`g=Rb+mNyv_g>yyziI0cNv{ z1q&d@e61eOmk;leN`e$qczq&Ra7sMYJe&{q0@L=NJ zaLtw0_T0Tsb~}Sf`c{39c)(WS+hK0<*JkTNd6E1JBtzFkP58lZE~I8iA4Q7@N**r^ z`GGeA<-iPCpBHMVI68|;rC+YV>VQ5@U2tJA>cK-no?*FmL5fB|+L}BR zgFnON!W$Ds3l@k-r$&4Lhzf1k@#g@lnn2)Qf?TfV!z0H#O!a%Yn686~cb{l0Yj?Y2HU9}WQwr@F%7YzInHh6Y7Q?RF@>izkwI~yIa z9z~`MbswiP<*>=&urK(ZE<~6|R!9f|1T+f!|2H3#a&d7`bh7vO*L*BT1KI<31pQk> z+mhV#YBeVr|NBU!Op9Ee=32rN64 zp&0?yJrjY=Af1tOTO2zL+`qXV$_awkLzK6_8lI`)-Cq^s6uceQf@dSn%=urlA@f!p z$`B3uF+-~vJsr{^-Mt;+Aq_D2B*C8a9bF{gig4m!I$k38{Fw2ag}*^=_kj7Rq!1(b zjF^2!qU-jpMLz1hD~341uCl;Az;+gH%Y!Rsq1hF;GJ_CC+eM*Bmc!e<2*1TD z?0mw?WG&=?uCzN>X^e`sTA?=4zL^+!ZBa4yJ699BUP=k}adk3I&T9^md7FUYY5p9Q zz3faQ`Gr{xy<0Zxk(ru*8}cDpWLH?gEV{RxDlCH;-)R zX!OWZ7u}$nbIoW8eE4=vNz_bqx=HSWU)r0Od8csjJBxR|pF%cY1#!T0DYf)l7uG9G zm#&{sf@Tn>uh4$d3Ky@~UM}6>VR2K5OAQ)uymu*Kc^9wXxeIqPNQW6^>a{MPFbdYM zEpg_zxcGe|O)&CVR-dIVWRseh@BC$kcVXApGX-k28sLApyEy7Q8k)LF8tCUX=eK)m zdp5?Xe%JfC<(m{Kj6HY+0ved<7TP4jY%2xkC`DpFA2P4zY8y*6&_zy4ge1{0aW_^o~8Gu)! zmo1rxK!2AW+`NXzVcsQ$`JcaH>SHW?(}!uebVr@A;jP{g#z3q6R2{Hq&sE$mW)_}C zi8|6~KEDqPA7(K)QeuxjBhddousIt~mjYL-^B)Jh##Y0rGwKLFT;CF%cqQnf;h50{ zGN|K?=RD$8!GWa?E@j7l|1=zt)hqQ0&32Jn$vB`W_A&$zkR$wtkj;3APAbUn5 z6PI;0^-f~doad2|mg_aCr@%R&4_2eK6px`YS2anlejy*Qgw@SJzEBt?{UV;)v<~g$ z9*-K#NnGmO3u#dp7>s;x$|vs%u{LIFu&@SCRCV^@LT0B|Ixc^7g(%BVS~ zJJz>3_a+XWNQS*&~8Tv!%YBBF-0+nCIF%LEwwKIzw3hvIxXUR3k z9Qk*=_6`ZDYO5;=LW>&T^|@%Pu0y@rHk~Ta@||?2Z|caY`jw}T3UCiG<2EBOnkN}^ zjXm>8%=e`rPjKhc_{#%t5CpbFI<0j(6_jTKV5dr!Sh8ptmt*BrvyKR_PIogCp0L;# zLZ(d|UR2HVV+R-Ywb)_od$d(*-+i&sO!GDHg^hA#=AtDOHMLZZaYnL-Zr7VSL?FwS zjIjCeW`p90jthdgs>o2LqV#ks;F=Fi zx&W&j^>YH@#Ga(12Le&gSt^V*v3P%C?yqPT%}awp;oI4|M@BV5vHUTuQv8uKy&_Et zk3UFL+sLXK@9AAfja*VpkBX>y)aHCHlW8NQR27eP_2B9Xx_5aK#KBG1limfu&RqIZ z7y4pd9887`W}Vf5IX2^n*1o7cKX}$hh+~Ve74N_<{lYx`Qh)uU&RfkgxU~b%c>G!K zOYzAy3jSw4lE>f4_k>6EP2u`l(H{-bY@D;5ph^pDP6pvd3*8HOFa3gHo-xxclUULz zPv=-JYSUlRq$eZUd4>ab77>;a$qGtu;f2JGB6xzK*F-stqnA^W>*;MXy?o@s9!-DD zkobuf*;VoSL36!Y8g=1Qst^H4mldwub|$?kRezKc-arEVgVb$!K($ynj;x$89j@k>Ri7e!u*6+^q|sIh#`8xdj*ILr4RfX$Dngh4Y)&h#1Wu$p1dC1&y zxRT~ga+A}}kh@Bg$mM{aRSTiURGDoRMH&dxElgxriW~r0MhiZAY@H6*6|PPKBbFho zU;t=yVoruwo;&?Ox^QduL|EA=aBEzoCBAi`{R6H$6@@=#m6rajumwX(24)9ua^qWZ z`#HR^mC=+$Z(vEeWMnq@0&HZRd8x{(J!u6q6{gN`9V?Bc8a6+!E-ImSl6QiAHDWg1 zhP8`rgT3cvx0`0A@o(4t*ED_08h?SP*Mqj#o!eij#HK3hIbrbaKzFmyOdr%9Mj?YP zf&q~`B=9?^^GmCCvprufgAtDqj9+gWLR8%;=dmxdLf_Ls2#UDk+5^x4>av@p$=(nD z|M=#F_eI#8<*m+Q%33Dz)a zL?NuwEf_O?Gdo4nN}-1HKmIc1_x?((y@x%P$3xF{JY@hi4{#8Wtw?i|Mwv&V6~$w^ zxZ^sHch_t&&wZTUgkAQ8GK!aTQS*$7v!=6S^RIviCiQ1J6w8H0H5sK+XdN}*D1-dH zkU2ff5IJ52u^S1M_?b0#ru}fl=&(C8-iLW*XRF) zw}>H7;`RSo{J+N7JpWsW{^tvf|C(yI{NB;P6-OKE1BHg2x-Uvmx1_C!V4q6^YWZjU zg#Z~4N;I%Nk9Yfpp}BUsumvCbUi7!p{{67(8~DBO1nD5rneVBk_dNI~W{kHBR|>R? z{O(oA%uEO zJVr3}Vuc$ZPH;7%Lw8k86B!!^8ur_{@|!qjh9+=w%%W{JT5Tt$^kqzJ#Yc}xEC4JH zQD-MD{p6xb=$!p53rNLtgA(+n@syeL-pK(Z1R!W2~G6a)j zU0-_ZsM#_QeG7CQ{cyJQR8%7F^W7|P#HohuZv5sL2g&tfEAAp zhza;W5g3+4k>5uT8|YWfX138f&>^ur4s-hxs!^py=ze4Z-NQA)gk<5$=WM4Dn1Cd# z5O8E%3vaG*1<$!xZR{j-Dw?uq1Kv4enmQK`44fzB5ui}9mZJVEtama>HvpD*-YrVb zvfXo2z=W%#FB5rpX`9!72Znd-^h{b`(ESHl)ZD?&xnlN=;BZ(Y`Dx_z$@7{})HZ~$ zPNTB>*D&BF#CkQ=yUPsQ3`G9v$HDvTS>;L0%vP<)H0TAw_kYEo; z??b}(Mk`JKx|By*CX#8D=9Hc^@k-OrV7iRVE>*Jg9P|IR8%-fi=*SwG%MEP6B>REM zU8k+44hH#3AGMsaB}&sHe)(cp^S-R^RjuyB@dx~JtOqn4`2Fy-a25?%@)o62*ixtn zhi#5<*`rKhWYMzXorfMDOkO5*-m+p+X+x?r_|a3$HBDlNNS3u<(H@w+r_4{-mVkIW z?4kT(D=5KAQWQAWQ;N+>8htKX64q6x!kZ|bI(*@KHEsLdx~_JKT=w2$O)RX~csGOjzynt(;#vAU#nJ#yWV z(fDZEo*HK-l_{$&V? z``}HXC^_V9a~V7%FkJcwU#LdU8qm!n!C{tuc&K1idm0RgJQALNUImd_9Y~hDenoct zg5aPo&T5Y4phn2zQtglCRX=a%``Bn8>gcQuUGeG;rjEZD4X$=FpGrMKIbtfsf3adZ z`24d^(qg+*B}vJU4~pn1qjzum;T=hzKXqxHNfSc(DRmzR#?0O z!)R?Xb88FC1AxqX>_Xla#n`u!@kfMH=x) z+?V)QcDw(&zbcAkVA$ZeqG44Yb?b$8N$4iOw3SZsw5<_XWfO z1Wk)qjB4sBkZo|=wiV=g6j6USn`x>#=!3MtpR@vVoXMcgDW_ye?-&dPUI@N z?bcJb>{4(H@WI@6?|ntORw@FbwSWV~1F=)^s$p#mHXBjk?;-`nS#_ilf(EWy68g8rTAjJ-%T1oad=SH3k$g*TjH35n4mbzhkM3x5cehmZ*1wvPdoe#1jO52Zw$ALL+vXLOWmq232Q>7~x0pz!3zbn?Gegi*Kf}HA z%RGXh#|;tATuEr?41DQAUicjYd=OKKT&Kt)e4pe^`{kNg^92`X>q!(%@Fdi=Q7zpp zUdd>qypfVia*gGvJhYq<=xx$=FCu+D8`(b5ocj(Ft*=ll&UY-sKhk}-AtEC0WOzVn zDyBUkxp*?+U4TF^eK%gcf%fF#b0 z?hvx-K%_8!GEo#Hq@hBj)+HNqI*5%)rUxj}Az2>S=)aYE)ipKC*K>8=p{>T~p$RFS z3sLGiT^*}dHOqExEw19dKOHwSSs6@2`!^qcZ%5m_FS*{=>$4p%Ux!zOo8n?87Ec6~ zhtif|GOQvei3Cn}RF)Fn<1;2MwKSuXnuzfSR@kwt9iyTU@ri_}e3wU&JPJvK$*#Hk z#}x#*ql>P!Pjgba#1F14mFbDIL#!RbClZLU2NXHxXM7u?>^^bfqYrq2ziEp+8+~g3 zJn*xH&L*FkSz?@a&xyA1jm|_D8_<#EF&4oVYbg)Pbcmk-co-S?(7TmS)a>k@=D0r@ z0=pG6IV}H{oZUK5y8mht^Xt{&(xNZ2L#)|n=c#jj;1TZ7_cKr(`D{gk~(cm zmUKw``S_hxhaM1r@d=G+dvGB}m*?_O#^=ND|96PM?32VAE=$_BcOk3w02O{C_hHG!|ghi~_w5H4&VSJV&g|8(G8bT&> z>HOAwzdGwYdNjne2Oo}3PK?-R)*!`V#M8H;am(9xF}A|+;v%?h4s8a_Mq$JDsE5Zx zwhZn@VNZ{l4RCUqwd;vEe|q)#r9LTA`g_|4?$EcCy@@*sM${unVKX^SB;{w~FpobM zv?+O@!*~qYzAX`nx6DbY%#09-PS{8jv}vYUAUSG*g9#B1G?@wWu7z&zA{-g&yk;Br z1_8`(k@(o2tsO`{>@KFjqy1||`{6vPQK511^(t5eie7r8tre_CNfDi7BmaYE#km-W z&p>*!gG#YN#HFjvWfH+77vyFhj{##mli}qQa&xFn5qxIU*ez^WAeSd`6QEu7aX&~? zL@jZmU`4h@Gnwf}$R=>p86zEJ(|Ycuslyo=hxkTNV>*I+?&&u+Kf$Z%rw`jpW+l zG$gqCz3O3TtH%IWG8Hv_tKSr>x$+Pqj?h$cbkGncOjM;xmZ8n1CxO*qX*e=eq|mH# zGq$eu^QL4Cbe*IN#|mJrhM2(TBsJ5J7zVJ%1n_RqGmW zbGlYW9hRE^CePSQFu2o5!Mr}=?czEOV$v#ALq(EI(gi3sEBTo;ED$0{x>Hp^0<3K5 z!0b3qeW2h*rneROfQQnKIIty#V=!_>wlfl7otVJHr>E^hEA3>6_J+ee)f~thu{sZP1Lb~ zRzoeXG)<>Uy$$Z@ijU@ry=wVP7MTJ&o((yNxKJp3b-O1Q$>fHBD^s-&H#R6ih%I?Z zxOdF2jr_hvXIbYz=Zal_QR&>VK0yUYNDZk8we7JVUEjn02(rD(_fF;8FSI4Z-XHcX zIiw2qf>Y1r+b_!T?AYG&`!K4^REXQoy_~62?5x)ZezIFXcfiZN4!NEP1jpaU8%A+Y zQ8SGTa-8x$>IL7FwZXp=Y*jxn2NUi>Dp6z$(_q30PM|1N!ss}uH_obw!(N9Md#>ew zxkL{LmYl$SXOxrGZB}>6a`0Qs*}C-SGol8~o)*lHR$Q7>DR*17tyT*6R2DJ^!*8#& zbEe$BlS60Uu)iXIcL@9EV*(ywgZ(G^7T#7N1SjK};b#+Vh0NbK)m04|G#e2k@PTp& zIZw5WEJPp-xon=_hp2*3%pfWwX|^?+1A*-|CnfCj3bzY&+WiLeKcK4xMf=!K;~y!5 zzoq}t&*A}vyG4i|F~w{9SL|T@GEO+JkX+MB!RT`k@&<8 zqw62+c!d!Xr+0>3zNh`?-|8Ux=meLhcS1A$BS36=$@*ySa$|z^bS-WL&xnJ6Mt)Y_ z(1U-5e#Cp%LAi zd6FI@)Tu#vz}x=DI&EyaALDz`V`k3Qs8#DXrGF3l1preHqcU-*HR)8hv>0kZrUHVq zE#`pHxA5ljXpEJBZeO31Sk!>Gg^N+C3fi+WK^|yv)NUCN`w1iCQF6~1fZMz?s}mkW zZXk-g8y|S9L`0jVm)a2dO&)tv_xGa3u)CmLqvSE)9re>-T?156OLyHh$)?$wShQ-- zTU-GZZl-GB6icj;LM||Y_m>NkmaOHqm73xBcES?styajeZ5jXH=UX9+0WB&x+o)_7 zHTg5Gy>MZ$R61}C7=iQO^s1YeJ)fXZCTsSY8~e{n+w|X86or|?XL{5k3yro+&6c0E z?F}4T%!4+WiZ@3rICYk4Vx&&==h`&|Gjrz-75rV&MCjU0b&*=sV=!m!KDqNPWUvJ) zX#=hcXSL{wGkHk*6gj=0avH{R%8`05ZmF7;=Un1%7u_;T+4tg-L8P00;udAt%}EX# zY*D4zMvM_#^#SHzLeLm zb?Oc-PTz{Om>iH;I`(0rCVZcSZU`aCD)O|u$oHMhSTnKH8Ta16N%OizQBj;_xt?h_ z<+xa2ay$ie+CnvV7tj>xqag6Q@mD_Y{@9f1BL!_GVhl_x391UgfBhc)h zPcFl-yB)arGlqER>*KZs9AFrlyv)@I`CRjERuYgd`QjUqq*NBvP!gwh92zqQFLiC5 zTd0C9mBF-jy3f?Ls!}OQ>K&cMM7Xz96OO)orX#nHV#4c-R!X{=9wswQ zO%%=v-hHx&h3rru1^zhGBK>}nrK{78==em#Z&a9jr@FFf%dwmS)=Qko+4(4u^%YDx zU;kSkRbD~u1`ahE$&)93v7`c1_oJeL53NlfYmo>*ov^f6#Fx`5sy|uk>^nA|Q!Iff zH%0sTY~tQP6H_gl^T9g#Ylq&FL@g;Rf{#soTa^h%#-N}MWpR~h#e!?4PkyJrU0Huv z^~bgo`oeqpUEuQ@!B=C(Ki*FL%db=XX{Ss_%^w$E$RL)#Z4uuBaetM@$%s?Qa|_w& zX^F6O5SWHX)LlySbHbEp`! zsSEOpn5LH29WmhqDb?^#zwQ|^O;r_PzR`=~8*ybho`4YP-v*Axvi!{}UfCjq`P0tM zV7AV@QM|&+$vrF$__;Mww%Re*-<7;TyuBw-%a2Ple6pwr$uCH9VAI2XnQTpY6egb1 z@hulja{OY8c4cRhCRp>Cjk*1?u0cg+gqEi!26p6nXiwGBTxV%XnHpSf!rZ*h7`CaOi2bd+n z$5Ns)u7^ChEGYw&7thM&1xZ%U#z^a31Ow<|8G&%tYgd=M-YvIn;|imJgwQ4x8?UqT z7eObnz~_TG3K@YUQZ`k4vaHU}Kh8F{*eVey*!o199k-`}t** zS|_Ao%uN@4j4$ePJy@s_FBt$SQ_hif0)5$J!iG4X@h$7b$SU`Gqs#7E3He~vuNq#H zvV{u3kO)e^o@s|yP#eAwyoaJ}k%U)>KgztP8e1hA&l*q4)S?Oe)3ow%znA)e*8qmkur^$@>v%xRXpgTDtEBjo-?E6LYGj7}qd?Nk)wCKqV z)%;)?>HI1#Dg5B2$gF&r3_bN?-xq>=&7$RT8rz5h%tuwX;1u?7%PU}_obu_yi8Mw0 z2$DlQ#Cthxka^9+j7TWeCoT^Ts4UoWPa-#LDcM9m#Dtf*n-u8cVgT>mWeE?zL0Ia} zA}j}J6S}Boi7M2R!WPXz4^cnD>vaB8@fqnqW=2kGNpXjv&~`7B-bM9vUOJ zurvRzSXeT0Ijwh8ioY5{c(4|~78jw@b)jF%5oHSQv1O2wQ9oUUL1DuK(UybX(M(yG8j?BSz1ma3Mpj2Et9Hp!Sh6LLDhO1H|Y^v+7d@!VlHoF$)NOgoQjH zYXuSz0dN)Hze>k&5n6cqVyz@YA*osM(jA^^U027MJ}fO-o@;L7EuhUMc_Q8x1xI%2 ztpF)6Ywd+#w3T6TnYg)Df=K8@;V7$Sznw_$MTEcUd--5-X}mBQ5+gL+Xu$z6P}`ET zMbdBlhWcPju=(GJ{5cTj872As49psWSXCijLVpMXhBy2>Q`=_ zf_jM}ZSi&~i!_23zb<4sY;4-Z+)HLrwyTIYi)Xz-itb?)Hf>u%DZVQa6{DDZy6VHrEo5?w8VuiANwpOkt@`FI=FJAekRNg*M z5t8CcdF7Icg9MsD^e{X2H)AvJSB0y6(+d1*7>uI|*-93gxA=mZAzU z$<-g!@?BdT&@|1FYMi~rPQf)*^2qXF(8+!6&N>M6NkEyr- z0V49UBD6vg%X3iX1XH-B>Wqp7pF)XO?sf5uQCvlQ8)=^5GdJ1?i|iJW1~ka7^_4nO zib5&};_6ytGsLig`Q7cW0&S01G?Lw?;Kwu7eY8rIr8u>MCW57RAzRdPTcDQMe5bUc zX(McxWiFRx)45QT%3*}*`=h0Tin)R_i0D$>#iY*|MppN1*+tzsHbge|;L^AJGrqaz zUHpZ^AY5%W`XMd%ITnE~#m)sh$mz!tuW~5@AeQ@-DpHOe1NfVl}r8c6|D< zgGLfe+m$PUiR5LSdovYYMupn{xRTFJAm49`#P--bmoH_N~OcG8u%v!pAV>{RA zZxpq8j>oP$gWw;2)wjO?Ns$Gul9$nefY@06Ek&03U#7^SHkJT87iTgx%m4SMJt-qQ zQ=9)9FW0DUIN^#T@srv%H#EoD?u~02LK&K9xixm+px}x!Inp&MgGl2+DKaHdEO1@u zHFPES9t}ZrS^%4PwBAPH$knU)_ffv&Wx;r zyHnp~DbA7Wov}^#cJ0CgU#MbahU;L7384&1Flv^w5MOA)4_clDXuWtW!GH~ofC@75 zs`*dVIx1{icWiE_vF~Ykwh&*c0djhVWoT0<8|e74YnY}FA=L2bc-saHtKZoxx%Z_M zQnYo@kv9*~HOd*vBf17aEB5*4B5;y$u)4^3)mA$+oW=VM(fMFB^a#R&s5J7Zz4)Ut zIYEBDL2G*Hf^1!7VHjb`An%oBGW>`UGx3>AFxxy{=PR^g-gCnk?VZnBtz~bP6MB0n z^cvVS8}iFMG-#e1{8->Cse>xdt0~E8nSSe#zxG`)DIKS`$=SjG^Qz1eILhuF__r!$1V^6d1peH8I&?E1|$9V!bw2I+!PZK5OW$GlT5H+uP+3kFu z>mPImoRsa6l#>1cdB?{7!NfMXOLtjP25#JFx7RPlneL&OeP*7)!aQ1j7>j0$NB`30 z21M8FPYlNJB)$N(@m!LjLObpH``*B>Ky_bV@Vn0exahFpk%VPTn1<_9{YGNlu+W%$2S?;icGJC6zaMUP z26&}g2Q(S&zL)I?nRysAd&ODX`brnXQgPTI8DFUS-UMcc_dkhfgP7Z&8eIarBnqPT zA&JI6|3RBL2;ggTfPekU1OKNy!SR2~6aSTD@!^I%iu$dJq)USa1D0(D2@h($F3L

#l5G!t=ElD+s`dX)XC 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 B3xogw literal 0 HcmV?d00001 diff --git a/src/musikdroid/app/libs/videocache-2.8.0-pre.aar b/src/musikdroid/app/libs/videocache-2.8.0-pre.aar deleted file mode 100644 index 953b437d25ee8d4aa033dbfa1af4e184fc8a2997..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53884 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 + var request = chain.request() + val userPass = "default:" + prefs.getString(Prefs.Key.PASSWORD, Prefs.Default.PASSWORD)!! + val encoded = Base64.encodeToString(userPass.toByteArray(), Base64.NO_WRAP) + request = request.newBuilder().addHeader("Authorization", "Basic " + encoded).build() + chain.proceed(request) + } + + if (prefs.getBoolean(Prefs.Key.CERT_VALIDATION_DISABLED, Prefs.Default.CERT_VALIDATION_DISABLED)) { + NetworkUtil.disableCertificateValidation(builder) + } + + httpClient = builder.build() + + thread = HandlerThread("GaplessHeaderService") + thread.start() + + handler = object : Handler(thread.looper) { + override fun handleMessage(msg: Message?) { + if (msg?.what == MESSAGE_PROCESS) { + db.dao().queryByState(GaplessTrack.DOWNLOADED).forEach { process(it) } + } + } + } + } + + fun schedule() { + if (!handler.hasMessages(MESSAGE_PROCESS)) { + handler.sendEmptyMessage(MESSAGE_PROCESS) + } + } + + private fun process(gaplessTrack: GaplessTrack) { + val url = gaplessTrack.url + val fn = File(streamProxy.getProxyFilename(gaplessTrack.url)) + var newState = -1 + + if (fn.exists()) { + /* the first 32000 bytes should be more than enough to snag the + LAME header that contains gapless playback metadata. just rewrite + those bytes in the already-downloaded file */ + val req = Request.Builder() + .addHeader("Range", "bytes=0-32000") + .url(url) + .build() + + var res: Response? = null + + try { + res = httpClient.newCall(req).execute() + } + catch (ex: Exception) { + newState = GaplessTrack.DOWNLOADED + } + + if (res?.code() == 206) { + val bytes = res.body()?.bytes() + if (bytes?.isNotEmpty() == true) { + RandomAccessFile(fn, "rw").use { + it.seek(0) + it.write(bytes) + } + newState = GaplessTrack.UPDATED + } + } + else { + newState = GaplessTrack.ERROR + } + } + + if (newState == -1) { + db.dao().deleteByUrl(gaplessTrack.url) + } + else { + db.dao().update(newState, url) + } + } + + companion object { + val MESSAGE_PROCESS = 1 } } \ No newline at end of file diff --git a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/gapless/db/GaplessDao.java b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/gapless/db/GaplessDao.java index 9c29b6ea4..636c266c3 100644 --- a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/gapless/db/GaplessDao.java +++ b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/gapless/db/GaplessDao.java @@ -1,7 +1,31 @@ package io.casey.musikcube.remote.service.gapless.db; import android.arch.persistence.room.Dao; +import android.arch.persistence.room.Insert; +import android.arch.persistence.room.OnConflictStrategy; +import android.arch.persistence.room.Query; + +import java.util.List; @Dao -public class GaplessDao { +public interface GaplessDao { + @Insert(onConflict = OnConflictStrategy.REPLACE) + void insert(GaplessTrack... track); + + @Query("UPDATE GaplessTrack " + + "SET state=:state " + + "WHERE url=:url ") + void update(int state, String url); + + @Query("DELETE FROM GaplessTrack WHERE state=:state") + void deleteByState(int state); + + @Query("DELETE FROM GaplessTrack WHERE url=:url") + void deleteByUrl(String url); + + @Query("SELECT * FROM GaplessTrack WHERE state=:state") + List queryByState(int state); + + @Query("SELECT * FROM GaplessTrack WHERE url=:url") + List queryByUrl(String url); } diff --git a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/gapless/db/GaplessDb.kt b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/gapless/db/GaplessDb.kt index 850b48199..f789a0863 100644 --- a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/gapless/db/GaplessDb.kt +++ b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/gapless/db/GaplessDb.kt @@ -2,8 +2,21 @@ package io.casey.musikcube.remote.service.gapless.db import android.arch.persistence.room.Database import android.arch.persistence.room.RoomDatabase +import io.reactivex.Single +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.schedulers.Schedulers @Database(entities = arrayOf(GaplessTrack::class), version = 1) abstract class GaplessDb: RoomDatabase() { + abstract fun dao(): GaplessDao + fun prune() { + Single.fromCallable { + dao().deleteByState(GaplessTrack.DOWNLOADING) + true + } + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe({ _ -> }, { }) + } } \ No newline at end of file diff --git a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/gapless/db/GaplessTrack.kt b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/gapless/db/GaplessTrack.kt index de775598a..ccf343e12 100644 --- a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/gapless/db/GaplessTrack.kt +++ b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/gapless/db/GaplessTrack.kt @@ -4,4 +4,11 @@ import android.arch.persistence.room.Entity import android.arch.persistence.room.PrimaryKey @Entity -data class GaplessTrack(@PrimaryKey val id: Long, val url: String, val state: Int) \ No newline at end of file +data class GaplessTrack(@PrimaryKey val id: Long?, val url: String, val state: Int) { + companion object { + val DOWNLOADING = 1 + val DOWNLOADED = 2 + val UPDATED = 3 + val ERROR = 4 + } +} \ No newline at end of file diff --git a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/playback/PlayerWrapper.kt b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/playback/PlayerWrapper.kt index 1ffef58f7..1ddbc5f15 100644 --- a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/playback/PlayerWrapper.kt +++ b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/playback/PlayerWrapper.kt @@ -2,7 +2,10 @@ package io.casey.musikcube.remote.service.playback import android.content.SharedPreferences import io.casey.musikcube.remote.Application -import io.casey.musikcube.remote.injection.* +import io.casey.musikcube.remote.injection.DaggerPlaybackComponent +import io.casey.musikcube.remote.service.gapless.GaplessHeaderService +import io.casey.musikcube.remote.service.gapless.db.GaplessDb +import io.casey.musikcube.remote.service.gapless.db.GaplessTrack import io.casey.musikcube.remote.service.playback.impl.player.ExoPlayerWrapper import io.casey.musikcube.remote.service.playback.impl.player.GaplessExoPlayerWrapper import io.casey.musikcube.remote.service.playback.impl.player.MediaPlayerWrapper @@ -20,7 +23,9 @@ import javax.inject.Inject abstract class PlayerWrapper { @Inject lateinit var offlineDb: OfflineDb + @Inject lateinit var gaplessDb: GaplessDb @Inject lateinit var streamProxy: StreamProxy + @Inject lateinit var gaplessService: GaplessHeaderService init { DaggerPlaybackComponent.builder() @@ -89,6 +94,11 @@ abstract class PlayerWrapper { offlineDb.trackDao().insertTrack(track) offlineDb.prune() } + + gaplessDb.dao().queryByUrl(uri).forEach { + gaplessDb.dao().update(GaplessTrack.DOWNLOADED, it.url) + gaplessService.schedule() + } } .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) diff --git a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/playback/impl/streaming/StreamProxy.kt b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/playback/impl/streaming/StreamProxy.kt index fe8b69a60..adadc722a 100644 --- a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/playback/impl/streaming/StreamProxy.kt +++ b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/playback/impl/streaming/StreamProxy.kt @@ -7,17 +7,29 @@ import android.util.Base64 import com.danikula.videocache.CacheListener import com.danikula.videocache.HttpProxyCacheServer import com.danikula.videocache.file.Md5FileNameGenerator +import io.casey.musikcube.remote.Application +import io.casey.musikcube.remote.injection.DaggerServiceComponent +import io.casey.musikcube.remote.service.gapless.db.GaplessDb +import io.casey.musikcube.remote.service.gapless.db.GaplessTrack import io.casey.musikcube.remote.ui.settings.constants.Prefs import io.casey.musikcube.remote.ui.shared.util.NetworkUtil import io.casey.musikcube.remote.util.Strings import java.io.File import java.util.* +import javax.inject.Inject class StreamProxy(private val context: Context) { + @Inject lateinit var gaplessDb: GaplessDb private lateinit var proxy: HttpProxyCacheServer private val prefs: SharedPreferences = context.getSharedPreferences(Prefs.NAME, Context.MODE_PRIVATE) init { + DaggerServiceComponent.builder() + .appComponent(Application.appComponent) + .build().inject(this) + + gaplessDb.prune() + restart() } @@ -38,7 +50,7 @@ class StreamProxy(private val context: Context) { } @Synchronized fun getProxyFilename(url: String): String { - return FILENAME_GENERATOR(url) + return proxy.cacheDirectory.canonicalPath + "/" + FILENAME_GENERATOR(url) } @Synchronized fun reload() { @@ -73,6 +85,21 @@ class StreamProxy(private val context: Context) { headers.put("Authorization", "Basic " + encoded) headers } + .headerReceiver { url: String, headers: Map> -> + /* if we have a 'X-musikcube-Estimated-Content-Length' header in the response, that + means the on-demand transcoder is running, therefore gapless information won't be + available yet. track this download so we can patch up the header later, once the + file finishes transcoding */ + val estimated = headers[ESTIMATED_LENGTH] + if (estimated?.firstOrNull() == "true") { + synchronized (proxy) { + val dao = gaplessDb.dao() + if (dao.queryByUrl(url).isEmpty()) { + dao.insert(GaplessTrack(null, url, GaplessTrack.DOWNLOADING)) + } + } + } + } .fileNameGenerator(FILENAME_GENERATOR) .build() } @@ -80,6 +107,7 @@ class StreamProxy(private val context: Context) { companion object { private val BYTES_PER_MEGABYTE = 1048576L private val BYTES_PER_GIGABYTE = 1073741824L + private val ESTIMATED_LENGTH = "X-musikcube-Estimated-Content-Length" val MINIMUM_CACHE_SIZE_BYTES = BYTES_PER_MEGABYTE * 128 val CACHE_SETTING_TO_BYTES: MutableMap = mutableMapOf( diff --git a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/system/SystemService.kt b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/system/SystemService.kt index 3ebcd388e..19efbb931 100644 --- a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/system/SystemService.kt +++ b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/service/system/SystemService.kt @@ -259,7 +259,6 @@ class SystemService : Service() { this debouncer ensures we wait at least half a second between updates */ private val mediaSessionDebouncer = object: Debouncer(500) { override fun onDebounced(last: Unit?) { - Log.e(TAG, String.format("updatePlaybackState: %s", sessionData.bitmap)) val track = sessionData.track mediaSession?.setMetadata(MediaMetadataCompat.Builder() .putString(MediaMetadataCompat.METADATA_KEY_ARTIST, track?.artist ?: "-") diff --git a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/shared/util/NetworkUtil.kt b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/shared/util/NetworkUtil.kt index 7045529e8..0493465d8 100644 --- a/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/shared/util/NetworkUtil.kt +++ b/src/musikdroid/app/src/main/java/io/casey/musikcube/remote/ui/shared/util/NetworkUtil.kt @@ -6,57 +6,10 @@ import java.security.cert.CertificateException import javax.net.ssl.* object NetworkUtil { - private var sslContext: SSLContext? = null - private var insecureSslSocketFactory: SSLSocketFactory? = null - private var originalHttpsUrlConnectionSocketFactory: SSLSocketFactory? = null - private var originalHttpsUrlConnectionHostnameVerifier: HostnameVerifier? = null - - @Synchronized fun init() { - if (originalHttpsUrlConnectionHostnameVerifier == null) { - originalHttpsUrlConnectionSocketFactory = HttpsURLConnection.getDefaultSSLSocketFactory() - originalHttpsUrlConnectionHostnameVerifier = HttpsURLConnection.getDefaultHostnameVerifier() - } - - if (sslContext == null) { - try { - sslContext = SSLContext.getInstance("TLS") - sslContext?.init(null, trustAllCerts, java.security.SecureRandom()) - insecureSslSocketFactory = sslContext?.socketFactory - } - catch (ex: Exception) { - throw RuntimeException(ex) - } - } - } - - fun disableCertificateValidation(okHttpClient: OkHttpClient.Builder) { - okHttpClient.sslSocketFactory(insecureSslSocketFactory!!, trustAllCerts[0] as X509TrustManager) - okHttpClient.hostnameVerifier { _, _ -> true } - } - - fun disableCertificateValidation(socketFactory: WebSocketFactory) { - socketFactory.sslContext = sslContext - } - - fun disableCertificateValidation() { - try { - HttpsURLConnection.setDefaultSSLSocketFactory(insecureSslSocketFactory) - HttpsURLConnection.setDefaultHostnameVerifier { _, _ -> true } - } - catch (e: Exception) { - throw RuntimeException("should never happen") - } - } - - fun enableCertificateValidation() { - try { - HttpsURLConnection.setDefaultSSLSocketFactory(originalHttpsUrlConnectionSocketFactory) - HttpsURLConnection.setDefaultHostnameVerifier(originalHttpsUrlConnectionHostnameVerifier) - } - catch (e: Exception) { - throw RuntimeException("should never happen") - } - } + private var sslContext: SSLContext + private var insecureSslSocketFactory: SSLSocketFactory + private var originalHttpsUrlConnectionSocketFactory = HttpsURLConnection.getDefaultSSLSocketFactory() + private var originalHttpsUrlConnectionHostnameVerifier = HttpsURLConnection.getDefaultHostnameVerifier() private val trustAllCerts = arrayOf(object : X509TrustManager { @Throws(CertificateException::class) @@ -71,4 +24,31 @@ object NetworkUtil { return arrayOf() } }) + + init { + originalHttpsUrlConnectionSocketFactory + originalHttpsUrlConnectionHostnameVerifier + sslContext = SSLContext.getInstance("TLS") + sslContext.init(null, trustAllCerts, java.security.SecureRandom()) + insecureSslSocketFactory = sslContext.socketFactory + } + + fun disableCertificateValidation(okHttpClient: OkHttpClient.Builder) { + okHttpClient.sslSocketFactory(insecureSslSocketFactory, trustAllCerts[0] as X509TrustManager) + okHttpClient.hostnameVerifier { _, _ -> true } + } + + fun disableCertificateValidation(socketFactory: WebSocketFactory) { + socketFactory.sslContext = sslContext + } + + fun disableCertificateValidation() { + HttpsURLConnection.setDefaultSSLSocketFactory(insecureSslSocketFactory) + HttpsURLConnection.setDefaultHostnameVerifier { _, _ -> true } + } + + fun enableCertificateValidation() { + HttpsURLConnection.setDefaultSSLSocketFactory(originalHttpsUrlConnectionSocketFactory) + HttpsURLConnection.setDefaultHostnameVerifier(originalHttpsUrlConnectionHostnameVerifier) + } }