From 3edd25a8aac6a708c858a3f1d2bde525fd75af82 Mon Sep 17 00:00:00 2001 From: ocean <503259349@qq.com> Date: Wed, 7 Jan 2026 14:13:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B9=BF=E5=91=8A=E6=8E=A5=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + app/build.gradle.kts | 93 +++++++++++++++++- app/google-services.json | 29 ++++++ .../TradPlusLibrary_01_04_12_20-release.aar | Bin 0 -> 23056 bytes .../UpLoadLibrary_12_03_15_13-release.aar | Bin 0 -> 21581 bytes app/src/main/AndroidManifest.xml | 7 +- .../main/java/com/app/wave/keyboard/App.kt | 3 + .../app/wave/keyboard/ui/ApplyActivity.java | 29 +++++- .../com/app/wave/keyboard/ui/BaseActivity.kt | 36 +++++++ .../keyboard/ui/KeyboardPreviewActivity.kt | 18 ++-- .../app/wave/keyboard/ui/MainActivity.java | 7 ++ .../app/wave/keyboard/ui/MoreActivity.java | 29 +++++- .../app/wave/keyboard/ui/SplashActivity.kt | 24 +++-- app/src/main/res/xml/net.xml | 6 ++ build.gradle.kts | 2 + settings.gradle.kts | 20 ++++ 16 files changed, 282 insertions(+), 22 deletions(-) create mode 100644 app/google-services.json create mode 100644 app/libs/TradPlusLibrary_01_04_12_20-release.aar create mode 100644 app/libs/UpLoadLibrary_12_03_15_13-release.aar create mode 100644 app/src/main/java/com/app/wave/keyboard/ui/BaseActivity.kt create mode 100644 app/src/main/res/xml/net.xml diff --git a/.gitignore b/.gitignore index b9097d5..da622de 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,4 @@ local.properties .idea/ .safedk/ app/debug/ +app/release/ diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 1fa59ea..ced72d9 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -7,6 +7,8 @@ plugins { id("org.jetbrains.kotlin.android") kotlin("kapt") id ("kotlin-android") + id("com.google.gms.google-services") + id("com.google.firebase.crashlytics") } val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date()) @@ -17,8 +19,8 @@ android { applicationId = "com.app.wave.keyboard" minSdk = 24 targetSdk = 36 - versionCode = 1 - versionName = "1.0" + versionCode = 2 + versionName = "1.1" setProperty( "archivesBaseName", "WaveBoard_V" + versionName + "(${versionCode})_$timestamp" @@ -80,5 +82,92 @@ dependencies { implementation("com.google.android.material:material:1.8.0") + implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") + implementation("com.google.android.gms:play-services-ads-identifier:18.0.1") + implementation("com.google.android.gms:play-services-location:21.0.1") + implementation("com.google.android.gms:play-services-appset:16.0.1") + // Import the Firebase BoM + implementation(platform("com.google.firebase:firebase-bom:34.6.0")) + implementation("com.google.firebase:firebase-crashlytics-ndk") + implementation("com.google.firebase:firebase-analytics") + // okhttp + implementation("com.squareup.okhttp3:okhttp:4.12.0") + implementation("com.squareup.okhttp3:logging-interceptor:4.12.0") + implementation(files("libs/UpLoadLibrary_12_03_15_13-release.aar")) + + implementation(files("libs/TradPlusLibrary_01_04_12_20-release.aar")) + // TradPlus + implementation("com.tradplusad:tradplus:15.2.0.1") + implementation("androidx.legacy:legacy-support-v4:1.0.0") + implementation("androidx.appcompat:appcompat:1.3.0-alpha02") + + // IronSource + implementation("com.ironsource.sdk:mediationsdk:9.0.0") + implementation("com.tradplusad:tradplus-ironsource:10.15.2.0.1") + + // Pangle + implementation("com.tradplusad:tradplus-pangle:19.15.2.0.1") + implementation("com.pangle.global:pag-sdk:7.8.0.7") + + // UnityAds + implementation("com.tradplusad:tradplus-unity:5.15.2.0.1") + implementation("com.unity3d.ads:unity-ads:4.16.3") + + // Chartboost +// implementation("com.tradplusad:tradplus-chartboostx:15.15.2.0.1") +// implementation("com.chartboost:chartboost-sdk:9.10.0") +// implementation("com.google.android.gms:play-services-ads-identifier:17.0.0") +// implementation("com.google.android.gms:play-services-base:17.4.0") + + + //上面新版本下载失败用旧版本 + implementation("com.tradplusad:tradplus-chartboostx:15.14.5.0.1") + implementation("com.chartboost:chartboost-sdk:9.8.3") + implementation("com.google.android.gms:play-services-ads-identifier:17.0.0") + implementation("com.google.android.gms:play-services-base:17.4.0") + + // InMobi + implementation("com.tradplusad:tradplus-inmobix:23.15.2.0.1") + implementation("com.inmobi.monetization:inmobi-ads-kotlin:11.0.0") + implementation("com.squareup.okhttp3:okhttp:3.14.9") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4") + implementation("androidx.core:core-ktx:1.5.0") + implementation("org.jetbrains.kotlin:kotlin-stdlib:1.9.0") + + implementation("com.google.android.gms:play-services-ads-identifier:18.0.1") + implementation("com.google.android.gms:play-services-location:21.0.1") // optional + implementation("androidx.browser:browser:1.8.0") + implementation("com.squareup.picasso:picasso:2.8") + implementation("androidx.viewpager:viewpager:1.0.0") + implementation("androidx.recyclerview:recyclerview:1.2.1") + + // Fyber + implementation("com.fyber:marketplace-sdk:8.4.0") + implementation("com.tradplusad:tradplus-fyber:24.15.2.0.1") + implementation("com.google.android.gms:play-services-ads-identifier:17.0.0") + implementation("com.google.android.gms:play-services-base:17.4.0") + + // Mintegral + implementation("com.tradplusad:tradplus-mintegralx_overseas:18.15.2.0.1") + implementation("androidx.recyclerview:recyclerview:1.1.0") + implementation("com.mbridge.msdk.oversea:mbridge_android_sdk:16.10.11") + + // Liftoff (Vungle) + implementation("com.tradplusad:tradplus-vunglex:7.15.2.0.1") + implementation("com.vungle:vungle-ads:7.6.0") + + // Bigo + implementation("com.bigossp:bigo-ads:5.5.2") + implementation("com.tradplusad:tradplus-bigo:57.15.2.0.1") + + // Cross Promotion + implementation("com.tradplusad:tradplus-crosspromotion:27.15.2.0.1") + + // TP Exchange(注意与主包版本同步) + implementation("com.google.code.gson:gson:2.8.6") + implementation("com.tradplusad:tp_exchange:40.15.2.0.1") + + // Google UMP + implementation ("com.google.android.ump:user-messaging-platform:3.2.0") } \ No newline at end of file diff --git a/app/google-services.json b/app/google-services.json new file mode 100644 index 0000000..32c081a --- /dev/null +++ b/app/google-services.json @@ -0,0 +1,29 @@ +{ + "project_info": { + "project_number": "678240667256", + "project_id": "waveboard-698b9", + "storage_bucket": "waveboard-698b9.firebasestorage.app" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:678240667256:android:cc488bbf270ab8a7ac0f8d", + "android_client_info": { + "package_name": "com.app.wave.keyboard" + } + }, + "oauth_client": [], + "api_key": [ + { + "current_key": "AIzaSyAIUbpjQPQBeWpKJVvBSmD2EdJXinxQqsE" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/app/libs/TradPlusLibrary_01_04_12_20-release.aar b/app/libs/TradPlusLibrary_01_04_12_20-release.aar new file mode 100644 index 0000000000000000000000000000000000000000..de049ac6827d9b7e82ea67b4207bb1e145705bf3 GIT binary patch literal 23056 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 S|F}YZu4;$~2;~O<%>D}rAB)uh literal 0 HcmV?d00001 diff --git a/app/libs/UpLoadLibrary_12_03_15_13-release.aar b/app/libs/UpLoadLibrary_12_03_15_13-release.aar new file mode 100644 index 0000000000000000000000000000000000000000..a3e30aacae042bf525f5eec498dbec4a8a476cf5 GIT binary patch literal 21581 zcmV)EK)}CHO9KQH000OG0000%0000000IC20000000jU508%b=cyt2*P)h>@6aWAS z2mk;8K>$#}e~Fm@007Sb000vJ002R5WO8q5WKCgiX=Y_}bS`*pY&DL{3d0~2ME8OG zgWP?zEnSqL$ww5rw`vkGKJc2-{(YrQhFJ|~;PCP7SMo9$Z43g=^aR8N6}1hsfUQj3 z4aTA2UIsfEETrNAdl__&Rts24Nj+nz7ULz-eWxmVCX-{?Alo-+8&Z>`a&k5TDnhqZ zyGE&3`^++bfDCQ(=lF&OJJgQs|K8hh*Y0tsUammc59jQ#8@^CW0|XQR00;;G002P% zach4(-%tPmPgMW_3jhEBV{Bn_b7gZbYGHDen`4YF%+{uRw{6?DZQHhObGL2Vwrv|v zo4ajuH|PD3nK_f3FPW;;kF|1FQortXtyGnw3_5^b4tD>80^+|FZjS$h2<`uf+#GEkj7)8>uK&BY|hsm&anUxVnP)Lc(*9lx$h!i0=<)8?S5;jF@AHJQV0 zd^^>_97{Q4=Ph`edYo{ocG|>Qg1BcJbqDSO@l|CyzG;7*Rco9nQ%bclz0V3& zL?oS<5#_&&IjONuhq*6I8$Ad_U})iNH1-*3)+MZ9jb|$qo8l?kMlOg(Gw_D!CzP6m zY;tsLDQmThn&D@b*Hwvg@b8Lf1H9)QK%zo!ta%-6Z|1+$L19M5U`iv|8Ie=L7OlXQ zSn9QOi`h5~8x^&Oe#z)=Z)>cptB z*Oo@gx0IDrMQAUp8G@-(XUOqBXz}6U5K9@$RaMp+T#Ce)E|$n!tnw=k_E;*Y^ne-! zX~u>DsT;w0(5O2bYLydmGLlt@{(&Q|E7;C)6de4t2^HoxhalV)!xO=2%o3-IEqPr~ z4xC4~MJq9M?|3rm^Ugwjvn*Vf9vnlK?Lp@#CzCALo56mWh`)wDk%v3uXRC*|j`2n0 zxdOU2ZCVHrIDk$=?KC-QSuRn)!~NS3?sc9pQKZm#!q4Vlja~_mUVHJlk+dh3uxp0p z!;#szL~)K8*T15Xz}eMSWwmwjJ2NyQBEhXdm#FVeG@bHy1zU)0r>a0hE7fMJ4i)ZQ zZ{FQ)F7r3;uV@A{*|kF{V|C&?gCY#vLZj`)j(c|~dmztTBUz|5|7=Ce z(hF_9+taYV)KpReA{jWzUfm%+k&~#Kug?d1d{tBkv*OQ8mAg~O(ybK&wg;+-1sf$6 z91Y^md2VzdM=a0p^=zc$sRgxfWG{Y$@Cf^at4CgQgt6$U_64 zldi{yI)db7i8EcF=VRh%sU3A@W<#gCGH|XZYbofh?QNusAl)-PN=MMJIP;3Z zvw8(y*I7Zvqlv^nVOqKe)-YHL>QvZjg_cdO*z>oIV@9>&NVRTH$Pv(~ge#NwsJ?e= zkOl*u0lwp`2bgZ5%s2>r|CuVdD96!hLr|>@{Au*q&$iUsr_4BxZgmQI{+`=kBZhPj zjnGdR-Rf<)UBylSxajm>XbapNc7b6m4fI(b5tdwb(ygfl+BT!Qd2^ofUS?JD69nD9 zc9k4iAI{_bly=W44!Mg5likjt9dNPV4Xy$7gC%n7R5`jk3A(N1o!)xR&snDW)0UsY z#0unnRhJMG%c0jIVWkMxP9~Zh&$}^gb`QasLdLsM^#;>_`&>AtH@R2}akRG<4C~Ww zRVzuNT-i&_yOw+C$L5aY0I&4A;G^M^QEgRR5_AiRcvIyqcwLyHIecApO>z15^xyhG z`4I(}J3lNE`fV)h^aIfy*~kG#d!djs!c8EF{b(t;FEYGrEAQp?qLpn z(U#U5s^#V+-I2|kJ8yYjB~A)jyt)IgM@ERp#*n&bmg>&>bb?WwhQxA){mSeGNxZz{ zb*7b3t)e1scD#bJ1RYdpzC#7hlZ7-L8<|`Ks_XhP4;iGP*oP}>s0H5bFuSEkF){^H zsNy=#dxMmhM!X8RcHNP>t~>j_@x-$_p7<9g+%tHBqs;wG3`dDA&ZJQQMge;ln6C$$ zH!=R}l*}2->)lS zd-nlN!z`2V+~4$*QBJPz5l zN!hfamm|w!^zg`>tubjh+shMl9)_0^)j^FRI?? zeeA9Gs2iUg&58QP^U`@b?)^RmSDR75W)%Lg=9RYs>*XK(xfn-)Ve`vV1)?6?FWO?@ zjU>oVMxpPa-U}GAv4x=eX32Y%MwmKy^TO?qI81*->wa^??H_dTDad%k^WO`mM)`#j zz_`zLpLEqjyT_2lX?#!-*%3*OvLzRjfyt(1WZWF7qI}X4c`EmLAMmgIS7+LK@beE) z5+ecuvHm+`lyr4)&C^4^R#*#J&DcfvG z^cPah-~@Xh@>W6vCJFHtDAvr<2%bzZUmI)jObo82h%g}4-U`5OSKyPJbOQ%B2Bo*% zBIo1%?(o!}2LQM@zw3zfb0js`PSaxcd+hn$_I3B%?sk5EK-_-f50JcN545%9Mq@mD z=C?k}uHw46p6Y%koF1ES`7NEX^c0V=fDJzz<2^_OB3kAwls|c@w~rkJ7o&)8swj%o z@o~vFUf+Ltv-4DyQ=lzFEx%@@onIrZFDB)n$auwB#kx^Y*fH2>-$z#Je##C?`;^&r z-UpLaHTyg|1xEU$Us~zVDu=4|9b>{>?H!tNQV;9xw(PJP zM+xq=0Ep{v?)$V6S@D?MLk%B(k;g96O}{)94T7|BC>AirCdE}+qI(t$u>l@n$CsM# zL&$>nv#c}*zksU&hvME%q<*3vPdS6Zz}eLKH4zCnqe!Xyo2$QHH1sS~l9rBvVCSenk#+h^oO?(Vk#^=dJM#mu`I)igmyDoX zm>^a0BjZaHqMC7fID)Za-;^p%sdJSvCjD87eUz%mz~zPAz^`89{B{8afQN|!BA=(M zpcC9}#I-l5&@|OwcArLt!&QGYo6}O?MP@JvDwa|Un6W=t1mV$nJ=QhwM1_S2;in`u z(hro94`y;UQ+cLG9y|ETYOHCRM6iYpzrHw$9rr$UiGEj?!4T}U#bMj$y(m71g;J^O zr^dhiZFQD+0sGxi$X#keEw73?+0+oE67yD(%SEvu>Pfe~H;%`BkHlNL&zeULUY)CW zrvyGtC*+_itRSIH*ktOYB)GOpr|0Wy8w2J9eh5qi;JeyXXDWf!X=UX>8v-R~gKl7E zM+JM~j`ODnt)6HHyHUWJOW7A?F(>C{?ylPct(f|2U=wI)DuHY~b`BOpB>svN#%E z)I&neH`A?A?wdwysOt@Fby*gY0V8^R4Kl~rv^WoM_A<`q%}Mn>)@vOP+vCdOd6CxX zuUueWca_p4^+D;-bJen6B!PgBt8kf4>S>nD@ZU)hf1jC{^TxKC{Z_iad@-}7)-hn3 zq#1I`!GZ&%s%xqWlz$@)QpS9Pr$jaGx&$xeYsd7!Ed7g#8j5DlIe7VseYm{>w^iY? znTf&+a0MO6Ck1S#)Oadk@meexY?sX$ECb7a3$TGxYvcf17qr--HDjpOTD=Hc6zJjF zTf?$KY}#;N;@EJlIn|xk;A#)!xedxEG`m~Qb~`L{NVevt?o)esux6t3yVB;H9!sLr zj7v(KN`AZ~#^I6RZAsvg*qk-}w(m`cml$Mi)TRBX4AS|m+dIE>u3nx0V;8vEy;lAQ zoJHNZ}IFpOS zNG`KZYPHtg@>aK4Y+M;%WUc;G#<(!V3~TPY=B5k0J^fYtyyhC21$3-KZoV}|&v9u? zNF^^WB?XtEs-go6&z9NdFa9$mEBll>+Mk)5WZsQS2uCnvacI@00K%1dE$6g$`_3@4 zTAg|$u}ilaZ-4;rbYor-_K)Nn$+_h{rMgM1C^=Q7@LP&1G9?vMQaidF85)C<^whIG zRDJfKh|Vw$XIo#W8ArqYksB|redgF|E#T~kH5QNM47)FC+@{Rwcer|p&+#g3o+pmN zs-fpx10x@t5rwvv4tE0##GPemVsCrQl^9FhyZB2JYANLx{khq%CSreYv~eO_noXRE zzZfE{>DPQz<5n>_z6#3-lEdBBrDl3=c6!fjJgJgjtju~BY8gmw*qt(GG>Ly@&LWr7 zdR@=*j?(;MmP30Vc2!69H|B9TeVB{%$H%*a5)I!zS@{=B6W>Zmv5B?c0Dz7+>NFk|Aq4-IQ<6h5~+6eD@G}0CGLnI4^f!1j7JN-1$Z` zzWJ3$-`i-;2?YZJ`sRIKJg84-1;eb2ABe5NSEh)cCIZ+$Qb=RJ8lm}&=>kYxr4PJnr)H5&MS?xDb@T;gonLx;rh8dSg&wh|tS-c+QTt z{($@|P-HO3^FKfV0fk`z0Wtr70>yvfM6V{4FRmKaPyZ~_q&uLDicU|PFf`PbeY~xd zkhCzNjA|!|eBBOP1}(>ye3G@9WqQVT(|Z*L4RzW3Pats-rM}{M8)8U=XJOE5X!EFs!7YN70 zZU^`Bs+oN3eDbjyJ67_Rj07p-ssI{!cT6XMK|2$^4@1FRY3-5F3RXf~lX4y>7m z<{332R}n_E(4lw-tQn|sT$T!4=xDpI39c9n_^cSB9_l*mB3bZv&O_2fJqSxFlu88S zo&%#+EYD6}4N0Sc33M4Qbz9NxB308VSYo#sK5x9vs-EI>3dTfJEIGMGp$}LL6+R7D zhpwVd`Xp`2t>VkI7MT0xw=f(Z_%o*&aJzCp_=eW|mF>d;lY>lu*a)<0 z)JtIFgzpmJZMF2P5om54j9Ds=sDTusU&Li8j7EqaS@SAxYqjr}OLP^El@5xgKE2>f zuDt8t#lYyyhn?PgAq@^(u=G2P8iBs%?*4L(fjy4LuuWGJ6*_vcctOWGT$KU6>XSJk zg&DKf^`KhdR#%Dk6WuyI$``>t+V*{Cfy|GJD0A{F5UO^AEec1YPIUDqWp!f#@XwY5 z=s>`VsIW^;LM>UXRID=`)&N~w>h{Tm_8I)V$v9NewV>`rzlvdIx&kWh4m!cve3;O$ zEoCuIor(De6UgrK)SSXiNw}9gH|p7=+nl{Wz8k5(3eo2W)s){>fU7OAHwQvki^mt( z0C0BFmtzs;G>TuCY238gMl_br(3)4#D~X9gY=Ms!KBh(@wl~=b5!A89vc|D2t>MQ- z15=KF@p(brnDbuRYo9@b3J0UWZ(k!b^EuiQhJ|Gu2 zGcna|#+~TrxJzu&*9=ZqzVa@i>Q3XD7NTP%D7+{2js&3TUysu`;j!g%AVcd9OHmow zRLMZN&2psAL^;r7=mqWm#`*H3)2DE>MjE#D?;ng8VeYTCS}3psy(_Z~@M5u(-I}Ry z^RlB&l32*TQ>S{c;|)+r6QQVuOILH?$GRPuRUYHX+}TIwXZUbPyxp56*Q(=3?Fk<* zsl2|tFNT!zGR?gAmPBb7XurJzZsq2Mu&^GFc@ z$FJ|YjIQbmhktj-FRL=E>oJedM03LJQ)Rl-R7%URwP?2J*;pR(z^C%3CIJ^xWE{>$ zqkPSQvBxK-WK|i*hh2iNfw^*;@u*`xUfNlvfUG2ZSuwlZaZ5Mzus8KE9l5F3==hC^ z*I{kWS|zeQgSZ}mBkY0YNB zh#&&6J2_vOix-r@x1b*sC*Wf9L=)4}BX#H-mcAoXFd!m=)`ws4Pbf(hf2O~>N;FgY zkhm|O&V&601p2)5_u7{<1pMw;_q37jYoG1>?z&{iPWZ38)1(&3Ga6(hix$fQT z{y?dl+@Kz)6;(8#edda&=@PK0t#ym3zG#wU)o4e@I;C4*J`}a6@UL5M2%w;Bt*G9- zCh@;_3FP9gUTsfR;aQz1DMx1}cNM!-`n>Ru@@U;}(WvUkS?4sxnZS(5sxn_=l!%i1|oF6(xlavV9mvRN#FOr!uQn+eB5!S2n>t|W<=O?^U74+$UWBh)dt?qg4 zrG3p#cYgRz&f))@*&3v#_#&+&rBv>^pjQGQ9@llQbOtODJBwU=E(#f%}Nx7Yn~{3ezxk^aHQIt;ic9 zviB?we@uhj#jlzBqldMKZMs!WzQurSp0U!%I}R3_vV?l=W~jBv$f;+ zqvU(=OAGCdBY)+t)*re3kZMU|i3E)^yASf-*%zLEs57E4a;=8(pakMCmM}}5FzBJ> zAm};irW4&JXG+~@?6w=q>Y;f~xX#;$y6pgKDZgkYGk@{ZHTRr00y8kbbU%LnlQEMh z6~ewsj9AiB`90RVFU-ZAR-KxPGX{TnxYW*6g)hE=q46l?d9*BTXxDC9bbAT@U~$ZA z0B<*^{SXX4Dm!o$6nNToG9z>Qd#6^};04uNNk95D;>=s^Gi4ulZ2exQLhTr>1AnXf zAr5{@iRr_e^W@_(ucr@u&s_QnX+5xyiF~LWD)s29gtj)z+YPHPtTOl>O<3*x@ao}* z=XSDAJOS!}fA@$vLfa0?Na?%%(04*hNG~ab4u)0cSiFvv1-Jm+Sk1J_DiVv0H69Z| z>L}e&Jv{eaJ^r|KebbRg8)r~YF76Q<)r8Km-5X9n!al)g-7(lu(xvc&hV!cl*B4Ds z-Sse+@aiGHvW1HGgb{LHcQ}pQ15#SN`QHf6ngw)-+BYthV+LS~DJr)t@%$#~zW~nVB_`rBq;0DOggAi%Mm~JM|nT8E?`*z&scJF=6|9n3?0OgGl zfG&}BXWiR;X11xb#}*ZHtudeS)vxNTs6U^&Imic$uIbgkN}&lGlC)dxx0!t8 z8J*jko7HA9(JFY*&d#9vwwLJ~=cv=AwJy@xPc|Ltkj*#Haj@VimyZwKUT)QAuM@+N zb(h791Ie$WLm4D{#K74x(Q1ZqaPw#BEUvc1RBENp*gAEjR^wsBq0v^Ry|E1K+mv2uk|x;LL7RPqUt?U;*k>VWr7pv#SAGPzFmjdDph- z-G8_~*JnIuX<0S{l>Y1y{5Eu*%p*b4>Hb<>o_{5%>XD}oC}>w*Q!B7AU>R{jyoaYe zOMwv9fh@UM<8^W+BAO>ax4eF4&AZ;Mw#6kF5=pu=3T)d=GS32@G>4Bn9Ok4(c!qo` zYnuJS8~=qHUkFD*8QpH%0s9HTlszEykB_prdF``9y#}M6vDUEps3AN`{E1xN1-;tq zCS%;LNs_$~>t`9U3|mTKRdjTrwb130XXPkD3>^&&oeVSftAxENOc9#+jF> z^Z*rDhv+Zw;Ri@2OgT?zzgpL@sI{79^pn8w5>dg&7n;v&f{{ z@HP6j^*5IOW9k~Rl1cRlO3vd5f23M@O`1!^*b<<15igy0>cl_B(-hm(Q*0uOZ7=sI zJ>7L!<=Gg=B0|A5VL287@?cUtyUiz8fOTXtVWj@&zG4AkQc)c(-#BO|z<&~78_|;o zO$kedQxb%x}{D$<&~i_=T(#E(y*Gp`eN8Q5a$s&v2w61TF2_If2l+9;M`N z&U}e7FLK9++BS}aOrkso_z?+eciUIa=4&a~fF}*#!TWK&PD(JVm}D$S{CaDZ6;LjI z?N$t}E8Y8($<#%p_Km=Cn<-8b{D8)(+&e#h&nYi;5e+PTEwy2iB}1sC0Kwbicw`XRJ5%;ua_jVDfiRvu3}6!rk56SUpU=$g;f@?&Cg!xpJ&dvfLkc6Hz89 znPOd?oV{$sBp@psNhy{#etcD>(aI{p;c^^|8`l!X{)oo=gBv)en)nA`Gxp29v`7Bk<;F0X(k6N1MZuc4rmf4ny&S z3pz3X7r&n65Q&$%I4lJe?H8F*>hGihx?g04Iv~`MEQNm%EEGYs&~)!Fk%{Np2Zx|<K)Q9q<`6hS!Jnf5^T6xV@j$TDBtVf>T_+vF6;kR$g*}J zv;a+`Jg1>gpr~(Nj^I&7EB9W%!|nzt=-IRSCe%E#`#J*K{7NY)NljgtvIp@c1-(@j zmTD6P>c+9u?oQebznm7oY0M;3U1p7j9y$V44!onJH#1;_=avz{1EHoiA3Jiu6im)jaf;)PtrG#* zdxv57PaHOSyzcdQ1255AM3;%r|VKhUCfMV zL_{LzqmqYsX!NOJ&Y5C7jym)l@tPBuaJNv}(y^2dgE(4tMeSGbX#sOHGwIA4(``zD z9>f`Nux|Q>o?kx|cZ&1giPR|iiX2a91&TXTej%Y(Po-gbY4~8Bv@ku`?%WNl zsZc+xX)1K7q4^kHvplr~Sf*1hd)$1}KX{#+9b0Hp9U>dLY!LC0)jhUesJ`c&X2EX? zE*@#?G*CShfjei0XLT!S85rugK9kkO7IAXSPpdJ?Qp(=$#pUpNXJ!i}cfQoarJK3W zE3T^(@-OcT^}e{8(!ar`B-f~X%IHi_N{){@*^D?{h~q4vRNQ?Jw(s61oWk%rXa7pQ z`r}p%6Xuz$YlV6o-LonNG;oKQl;s@aljX^9c}5UPt7Y>IH>7Kim}{pWLrxm`k_Rdr zLJqSCp{t@mNi)V3m-r8>uk>~Cw7iZx#q7_@QFo2azMa*QYRqC~lbiKZflK)k2Oe^E zb`4cqMw3k6sir32(`Bm%4he`SVin(5Iw5D;GpI_3@B5FJ;V4apRViwW`&qiM;d}HV z#7esRkyK@o7t7}@9k7m}OawMj;a|at)Ru}v$axRb8PLbWB{GxBaZ%%S11D$MNTjBD zWfuB1i^RV(&g%rVw9>-F%er_7o0Z!s>gg3F&mp@nX1^eu*dnJpmEtGA;cmbRQZEF` z1!NnjTC~}uVS=j{X;*qyxDX znPOKVhd!rFue|(qMkY5;+1F~iuL2LsM|L+#4JFNip3iYk+%~VMzZ!11bnaqppuvuq z&|hFwP;wKS%)~f6Fq1i+g<7Mc(&w(Ox>j%HfswI%0|sH$wXk#@%^8Jjyt<8M`>SID zTD9ZR7qOPo%>g-y4rgF4IgKk8p?u3_zj?ds24@e7qertD@{*f;V!t;!*~rKt~6DanTNu#!&H3NxY<+e&tEUDU+X zFhJS?XCeE!tPj#k##+ZsZmUd!wYIpF`WcF^C^@gsylL^mCZcr7niq|`n+;99Sti~d zpM)yb*D~62Q8fnr;1Z)n^=h%ZksU4dms=$~a92}mD=#^{9`v|XL1=^=2^%4`TfHm~ z0lm~zSMF(L;e&8plB~)Xh>G7w**iq}`>R~%5VCHPBx}dVlW&QQK5jpWO)8h0+vpaL zj9J^4ZRXr)(!}Ot8Ed5pJcEalFxLU)sjv6 zP&0k^1&F8X+2U-YxE=6FHFIctOF6g7ewM6 zo#?Q~@+Jr-!JjIAJoP`dI-bs8i!YH3JJ6;#Z;?+H-t5FL1ZPgNVet);2zp7W?R5Tx zT%lqzBBRJ-YxouOyuZ7KpWZ=3^P%>mxCO{?GNd>6N?wPo_HqvQG`DfW$it zsDMWI&o1tcAY!aiTNPqDy?2`T>V3}rx1{g)!;Q_DTs@-_vq?#qT}5$aD_<}UkY0#L z38&E)_nq-I^-CzQ6^%ud;WZGx#wh$QMPHN3hz~z}!!3~z^4r7g*E_qf?$?EqfFJy} z-rMpN8Tv`wx)}e)vD>HW;I4?Gj5ZTHW{Int0TXyMaml^4R`@NMHMC zAU;m07W8wUjE&xyK<83L_^5GepTjc23P!AR*$YFmX3{;j4U$Ta+Olo)pS4X!>RI+ zXZR%Qy$Honv-q^M;D+zLtUqTsd-CG25gdr0Gj-mLcgcIqiO=B(`1$zA2a-Ra2;@U^ zATy}HKlC(TX~gga1SBwIR$K$vk@|B4>nl+A$2IH!Bqn&yjvDk8+ zO@odG27elr4d7@?Et)b!@CK}h@(1eO8m5T~;4xVpwq}`V4AF{e0C#8hdx)hB;$O)f zqFkX^c5-Xb%UyB~q@Yx}u07RWv^eZE`cBts)@+||s|SVF{?Va5HwOw&$yUg;#L}+@ z_Kz`w53UlH0QKI(3a!e^c`-$N+3pcM(cgI>(7odwXVwe6vGbfqn6pS2cg*@jLR;Mu z1TM_WQGc;by%A3!XlN(D&k}ma1!%YCc9RiY2&l>w2o%{W39uSdVlFpnVq3yP1#~wmA&Bh)QcMAr-%VDEQ?=sk^ITUBi zicqH=sKo}7Y_U0I9mAqlQJ?Y-tYeya`fAsTb5b?+{c-v{yx6i@T*`L%Jls-NErw$j z)0Em&>V%bNV^xZ5uk+N8Z^hTL5;huIQdj$x^ydq0=O3F5+oHG8*n|zPj#~^#EZz1h z-8w5-?z}CEQE{*4oA(g&c9=`P@GS#GRDRXAN?=6R0$dDq9hi_=K*Xtmq0tl+^72cR zaZ;I=C9%#yoO)L#W-!O%`aI(??YmoFn!D7F*8Jt3Dmo-Wr^dcrW)ldc&cHyW7w@_ zRn^mKe!HnrJ)?V~0W#VAbgqks17|g7jlR$=%l>qw3G8PmS7m0t5Z=VF#13ljrWM3i89>Ve! z%BaEaMcSrxOQHFq3Omt1_&iB@u`ej*IKTTFvD6{RZB6)uV8*~0TXQz5(Lv0(`~wYO z>JgSQ%r(MsLs_5B+X&xTCosOXS?ADtVHtT@FbJ5?fJx3?DmtQm_5C4!Z6|)+aC@D4 zw1ti5;KC#PB-(_xbbYWn8h21j?@C=Ki*iZ3I z?q(e{fgI|BY}+DLN2Xd9(WY0Y((w8wnYP~*ulXGcObw=Ls7h^6Jz|-V^aP*qgQj3{U?$$vNy6YbN=r}Q+3A$MGf_5M=r~@%_^Bbg&nmKEX2Rb z>Nj;sL7_5a*)J)bkg9w4<}f?%I3Uak|SuhS>b@_xJ{ z?)(m^Z;O$q6M5(9cJt|>N8b&>&-W+IZ@^o`e#Fgk>lpVJZMX)l%gXUh`R0;$pgqj? ziP~^%5EJRz8~7Tny+*4|wN2QK1d?&YOjg^ufgxmU9NqY0XhaZW5v7TOvUP1enNpV7x=PJzdl?Y`Ap(ruPIn@$B+pV{W-rnufmhtXx<`FbAv z-U0JQqgmMek3@L0ijN$3#HM~4W${%g(CA{&p?WLZaQTs(^Q7I@y%)f5@je=Ex(HkJ znVcC5Dr|V(kV)#Fj&bRs4RSxT3qy=Rq~Cvh!G;cEt#kSkoQgRIlkVz9E!m8_8qO6;a!gG#4Yy6cEuCCnToukrLu71`DiduD-vGWStFXd3tLR&y zv2x>yKdd4Sxoa`gVFAN$B}Sh9xGWJgPv>r7Bl$cA{P`nVn^Dh%I_}wsJq@C;7y55S zXbf5i*4s7qU|ZFK!m2=O#v^*BXErztnEdsQ`N?gndytFSgCj^N5Rh82M;>xcGAJ5_ z+P;r>yB)-E(oreCo(hSkgOX8(5ZR;~TYX>wT(mzgp{#Fr`r^{f(Mnq0Pj(@+b?C{3 z!OGk@k)+)b;t}GJQ<<5jSBBy{27Mya1AsSak~~9{F?2LuHgVI8gwMDPh16xF7lyQ$Y22WsMz=DV16=m?E4mpdS%HNos!0!ukNs5M_ zJfY{rS=oxoJe-V`@Jn2!_$80O!YJAtVqlSj@k$){2QnikE9rXf@lvFo za}e#oJJf>`mIPW96M;shqDqywQN{3yzB#=egOV_VHUE;%Ej4?>e=x~tI~WlP`eY%- z8e(cCMG+rqcYvi2{3T4sJ=ZUg1xp{wMt%Pxe8l$^bTz0@tF%za1a7fmN6Y};=@;y3 zjopsV*n$N`=7*g#ONp#Yc;5;+S%Mb!nmKjiil>=CiLUnQ2?nO})D(0AlR}6Jx51yK z>jEL)-|qisOY5!qj_|M6C8k9*{|gHUD25pbi0I#2*MCI+{WVS- z%2#z|Mc~w&`PPg%%#@tg2o8}^Fe$LXDoBuh!VotdCf z&C05^U9EPs4q9=TW{dJyl|k#u=GUdM2HLeTMz>|F@6X3gHW`eJj{i(gcdpBPU(ck= z&-;`{q-APHij_L!>MaiLz>g#?VpK@?Vc;A89=lB$63ejxCMNV7aiC>6bJv6rb~4E#4twSaYc7xjTk@(2=>sVo1F_|0{V_I&0~zy~4=wBEBHKZPcibF9tT0A*_U)0U>rQ8E~W{>|vT_kr^X$ z;#)9uxV)FF%ZG8KB|Ak3x|c3!cf zt;}JyGKvZZ95Zxibx+9pmD(vadjtV zaXX}%$fTRLGOi-si zC5%Ah+8o(`8&Lf+v$gNn0Ez5lSnau47=n7@9SUi!e)gwMi{gwH6eMEX^cV0EZWw!Cgam11d z*~j>vAI*e4M><9d6Un521AXW8QZg>7gm* zHd`slW=-nr19TuW6u5GF=0!E*z>J3Xnjy|m@wB~5&-QIMc^v(OOgW@otNmH0{h8N< z@FOTkiOL}hkP}GI?Uxh~{gtq~x*Ou)LAy&J`NpmlAELVaBLr{F1{SBPc9E|tCQz8) zbvFLQa^{FDYb7Q&ik$0D50e=Ky4&C(crz5;20wj&=_$l$89KBm2P@Fbk&xw2%hpBVeNaz_gN_5&@lCxLRfANGK!Ty>FC890ULqa=y zPT&|6a|W=tTN5)LVtr9AFi;6DKU1_&sUw1n7Rsi~g4S$>No<=dw=&Rbb84 zlA0%ALvklhLgcW}+7H6(U}0QXLuEuF5k~AlTH1ixT{_(|3BD&Z9>?dngr9bfQ+qvAYav7HUrt=DI63Y8!Lj{!%Dm?`P0+Q%=T(wHq2(yEXN_7)MO=&_MjlwlcX{Ro! z+ms|9E%7X|v>EwXCKrE)(h&05ARCO0A(Q(hY2TavaM$rv@4q!KwL%Mu^mg*=HC zhmj-}<{ibz>?zNAeVhhC{hH+#RU%~a&|3iTbZBeUV=cQ@5+i!ZMjib&zN_e5&;J315{G0 zrvoD!Ev=whUam~3;nW(f@yLB#fMr&by*A9z&>Cp$LjjRrW7(zR?d zoO9E?JD4MmMyhbt|RZX1g7P*+gG2Yy0|ZzY}j%FA@iQBBwX$QQ8U9vlEf;WzE)1( z@(j-6_> zZ4aCmX{6y`4PLk2Mb)0zrQ<3LFKF>EvF5Z50)hYaot;E}&&}Dj#^J-7gLet^Z%F$a zq3E>}M$`~02O&iznQL%S%pq-ehLV`_Rf0Hpa#$|rWFM8~4bwtYW#yF2W-9cSAz;^} zIw?Xr135+{d}xXnH4d|$lXX5!xGJTbWl$WwG()7Ekg2O>8S7>gvM^}E{^-k-iVc}H07%ft!*(lViR=LS7|b-5f+QQ1 zE`2(C#eage{GIR=2_%SE`%9`oENuPFRFvz=54|zB>Un>8L$0Uv&g@Pn>+0b`<-Tob*}}f znvX1ncK{2{S-)>cU4q#8`!wt_&D(W7-4{gh9N6hvVknI$u`l5h*f za^@%ANK0$r5xIbNm7jcTw7bj zOie3RsebU{Y9D6W`v?bh%#^rp=*x;?TVbsf@^To66b~tnz6;!Z&DJ=NabJ;gO5*6~ zG$+Y~-jAt#)EP0z4nQ870#W3k^oik!R{Z^WB{@M2~-8@K5 z1@{^5LgE(u#iGy;^{+Iw=Np$6Lz40Ciqfz72fiYkvoAo)ho`<60rMpkDgCWB!P{+@ zc*GU@R*YXWT~xX!QId3*>Tjo*R)ax{;aqzMYelaoWJ~x0gxK!E)|KopvR>W*-M@h z%yC??A(H5sRD=-pRn$MvQSfyoo);)lwUAVOydD!oy$k@6*Aai`=t|?@VV4Vyr(rJ| z7vvmPy_G!Y8v-7T>6Bdi%eoaY<@E@<@LU>~7J_`^F0^!#uXoD)j2{zkC%r8`-wufk z)zxXM0Lz`yG~bONj|GVJX};2@%zYoLzjTw_>u0|SRo@&?3vm3zCU1k&QS;0sz1d&S zOhZ_sL+!G;1E?>X9}L3$c8%EhMOjd{9n-9}0j8_m!#m!Y+HNa?cvK!&CKm2XzB`UO zg&WwB+?PXU94Bdgw5^LK_9d&ay1uewesT+IM?@cr9?2;r<_i`_VClB@$nPM6Y5g9f z%BUMXN8+)yGTT*OBiFq>%l-OPRRMn;Wwp^1PLggyCH&9I<>hLR#p;JXJGZWITjLUU zOr>h5D2!!P1?C3*1diwD&lKQ;OFi3$SzYf8R{A*|0&)rh-Y5Pb7IgVqW!L6HINsoY zhfH!j6wrxh^Wp;v>O$?I)V>0n>TSLp>3N{f$9#I<6E7nv;)4s*j$`m!PC&8@o@+KG z=j!GPy@NNES-IB~i&QY{)>=ZL``#j-d#o5M`Y%~nMK?FpWmlYd#yO9@l3iC#(T}xO zTzU(#g|bxPz)2cb#)~o>2(A?=o&=S~?50{9MCr3AJcmylfo*g*P>`VLI*;I5d-W}n zqja3=+-js*3NQohny4dS>qUz7{&kyYi>QprQmp1IkWUg>fVWW z1R=YYeb`Q#d09FovGrUSSrR)445a*kk$IVB1LI(rS@T$X-Vv8y#8|feNvV?_zwzc1 zVkW}oeO;n2p4T07jR#j2&Eb+$O@g|)8VjrY5UEU39`+4j`&J9 zU(2NLxZjCxR4)V)_iKJhBS0R}oX(`Mn>y@Rmt858b;hHP$uceI8N<(A8{e!_6z|CN z*2G%G5x$zuSd7&2I~Rt&3i@3mLi6b~2)-OH(Y4Y7Q3yWlf@ihK3_%Id>fUrlA5`=o-*~^H+ zR$ZB%r$~H_ft3EA8}tO7QwF@4pxL8-nk0Q`2~ARbM6n`q{=>G=LF+qj0nLu7LjS?i z0&Sr2s|j+Zt@od|%AwzW41B4f*3n)NPCVR^>!Yl(=Ei>9!z->URJ+Sz-vMZqIuhxa zZjVo5=Y}v0n7z9{$!FY~wT}dAs+;gm)7K4AGlrWs7*=S*Dl@mN$}B1SR(LJZt4g<7 zt}};9W@E2%)gy^qH8o{jiR29IES;!IMht$=+qGy7w*&~_*kcT64G^ES(81tDL!NKP zI3f#6F3)#yY>!+}SH!pZM&}$xwPI%F+soYSkI0L7g-D({$QACM>o9ZPNIv`cgj_^~ zb*}S%F*7?TdhkU?dR+cYT&fBNcU>bW&u5&XC$2`%)&Bs8dCsGLEOp~B$#6xaap3)d zp+pzW^r(-9qxP(Cec)|tL2SlP5%-TM_hpS%gdz-R3U zQqzwS-imICL%}~N+Tc`=Itv6?f+t1OpoQw+bD-g=4hv2qJBq7EUalfJLW zzNk(8I>hy;A(<+xCpL=q(QuGUP-N;0Em8OJ?WCD4;4=x-=?{I!-d~y1#q!tGJYT8i zi?9jfyyE^mVONBf3t}k&&$1@8>HM7s+}hkJX9+(;yo7&}p;n*SgIi+M#iHJ4uZ}h- z>PM7iP>^f;<>tfp^Q`JIoUwNb1a(68T^u58BnG9-?Zj2oa%bPH(SJwO@QD;BLnNKF z-A1WQ1UhO|MfWfb%P3{7`n@}7L?-o-N~ARef`d{QGt;>IbAG_$P^_S$em5r89mg5K zG3;yJzORy3N4fHMt0L994gvdU7kXQMx?mq?D08z5@kaSUc%8~y13`Ib;&3>}N4JxN zw9o<*{N@e9I0=5?=dJIXtZZq{$V5m9_M5w&YFOR@gT+om<`iM=ODH+22IYco-Dyu& z^L(&yRsfn{o^S}m8;T6$D$FpJP6T98J!h}S5--V+-<@O&g-THq%1y_PJoM$ogc#R%Q4LP_y9THNWfvZ^=ffFs;@%LB44+zfUpUv#Q0TO?aqH+FF5Rs6tvti4 zV8HpUiZdh}br8F#bef;??^k0dNb_0_@yJ*TK2w!a(fqNRcQrmy8NtelO)Tw{{Ylcd%8#Zcs=i<387?Z@7L z^2U$JQ(u=0L)Q0jt_UNi*vN6!pX)YFBtc}lGE{)Ad@pOB`uQ{)fR<_S%~VP0CTkEs z`6z7(WAlb_D0w(5oa?sMlL2}UcQUIacD@L@AKW9geW}N@fmfbX)1#MM_#k^Q%SI8= z4v<9U3bivFZT!7)4C`r)k-sv)@1VWCd&-zEE|#R`D}MbWY0b=J~4<1 z^r2ecU%jR%=b6+jTg_eG9F)1(k7za;R@Z03B0>~*4*%cZUG>BS**A-X?+m>V?9f;1_Rui1?#; zkx)AL@;keF+V%V<@oz{YoIM+Kn~9?x%!{ zs4Own_tq8U75LZsshjb~qwJEy;fO~qO-z+4mr|+bXC+V<{{2p<@r>q9kku}R*L;u? zlup{DYZ9^cJ}}L9q~OqHtqPAX$ie+Z2qB+bfUX>-mj^utFdjgc-ovD0_9;N|tw2=G zvBJbS_9s>xwdbP+{uYsGw%KGG9Q!VyiBaIlAbs;E|G2O~* z#q82)5fsG2_(+uus4k}+AP$sLTg@I2|4LsO#hgz^|I^51gO&{api?hjP^Y?$B_wo> zmzPl8m$uJ)@=8fjbh#u^)f|hvalkb!ivi1x_u+{eh>xlP1E`zF?9`Gy| z-f9xI!)q8un^r$jw-OqsWr?q)rU;!;byyXB{RS+;NS7Nh*PD?con5`*QU%QxZdP_(`n+fzb;5W-tV%ubI!96^$8wG$Pp79s-0t8q@C*k!kHL?GN zwg41gj2os9vH}ZvDLob-hn@^KUs+6socEJl4K;4DE47^O9xW=p=6uYltmd~Q+pZsJMDaw6g01SdP6 z&Z3FC9S0Anh*ey(*f~L)A(TjQwUSlScnxsK`?!X^UM%u?a<{U%KE`9i)yhnA?tI~h zK{g}|RC=yH@TS^p0w*-vnW?}#jG{H4;qf!#E^JannX)m~K#5%O)rLu#{S@@DGc|G0 zVAEr@JO!@-TV{i*ht}SK46r+@agrR@n{#l6mc}}kW%smCG;)-z)TF?usL7!_es
    _mTy^Jq1;==71a(h{63OHO&^FztkZ_k9I*cKb&s(~)XH5_ zj6}_o6=|_mP7r2A4m0Cij#TEPBfo^Nnps24fF6;Dt^BlT6l;$ob*sS7K6p4-L6y=X4AB z?YH#H^Z3m7;!;jhN?N)Nm1*m4Ly)w0tRhK1;e!dHV4v(B*F$+ZJCWbQYpyPZ>nv@1 z?^9Z?E(wM$sr-XAtWW{u>j3uZ?$@>`%9Cz;;X5f+_E_i`wbyXyvHM_=dA}P!Ley*jx=;6Spt7XT+?;>ob7WlEi#MP4 zosz`l^)Y1yAAXR0En~TaQbFpWa7)Hy-JiUa_1HeT8L#!YU0p@(;cQR^3qHMlHw$@m z7q!DuasLO=@d17KpV&vDhuq!M&ECh_)AoO(Ki1(+g}Xh}*8KufwN+9(IAuaBh1=h&e`IRqf zscvWLx3Z*115L$hEg}T8(%8z^acl8sHKLE zL52B$qb?tg@{cGE{d@Tb`0`K5pWw@X3eeDsLmxk+^8XWq`KQ63yvctX96hA}g+BSG z@bAKZaXJ5P(7&QM^iuo3x9d;kpY8g$l0)bJ(L60RY@ENXupfpdIvU!}gBcpye*k4u BjSv6; literal 0 HcmV?d00001 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c1edd6e..bb0c1ed 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,13 +2,18 @@ - + + + + diff --git a/app/src/main/java/com/app/wave/keyboard/App.kt b/app/src/main/java/com/app/wave/keyboard/App.kt index 3b475aa..932c8ce 100644 --- a/app/src/main/java/com/app/wave/keyboard/App.kt +++ b/app/src/main/java/com/app/wave/keyboard/App.kt @@ -4,6 +4,7 @@ import android.app.Application import android.graphics.Typeface import com.app.wave.keyboard.bean.DetailsBean import com.app.wave.keyboard.bean.WrapperBean +import com.up.uploadlibrary.UpLoadManager //import com.pretty.keyboard.theme.keyboard.helper.ObjectBox import org.json.JSONArray import java.io.BufferedReader @@ -28,6 +29,8 @@ class App : Application() { super.onCreate() appInstance = this dealFile() + + UpLoadManager.init(this,"ocean"){s,ss->} } private fun dealFile() { val openFile = appInstance.assets.open("keyboard_res.json") diff --git a/app/src/main/java/com/app/wave/keyboard/ui/ApplyActivity.java b/app/src/main/java/com/app/wave/keyboard/ui/ApplyActivity.java index 2d90374..b7d53c6 100644 --- a/app/src/main/java/com/app/wave/keyboard/ui/ApplyActivity.java +++ b/app/src/main/java/com/app/wave/keyboard/ui/ApplyActivity.java @@ -22,7 +22,10 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; +import kotlin.Unit; +import kotlin.jvm.functions.Function0; +import com.ad.tradpluslibrary.TPAdManager; import com.app.wave.keyboard.R; import com.app.wave.keyboard.databinding.ActivityApplyBinding; import com.app.wave.keyboard.utils.MyKeyName; @@ -31,7 +34,7 @@ import com.app.wave.keyboard.utils.FastBlurUtil; import com.app.wave.keyboard.utils.SavePresentKB; -public class ApplyActivity extends AppCompatActivity { +public class ApplyActivity extends BaseActivity { private ActivityApplyBinding vb; public static String key_name = "key_name"; private int mPreviousKeyboardHeight = -1; @@ -43,6 +46,7 @@ public class ApplyActivity extends AppCompatActivity { vb = ActivityApplyBinding.inflate(getLayoutInflater()); EdgeToEdge.enable(this); setContentView(vb.getRoot()); + TPAdManager.INSTANCE.loadAllAd(this); ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); @@ -68,7 +72,7 @@ public class ApplyActivity extends AppCompatActivity { vb.idBack.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - finish(); + onInterceptBackPressed(); } }); @@ -198,4 +202,25 @@ public class ApplyActivity extends AppCompatActivity { } }); } + + + @Override + protected boolean shouldInterceptBackPress() { + return true; + } + + @Override + protected void onInterceptBackPressed() { + + TPAdManager.INSTANCE.showTPAD(this, new Function0() { + @Override + public Unit invoke() { + return null; + } + }); + if (getBackPressedCallback() != null) { + getBackPressedCallback().setEnabled(false); + } + getOnBackPressedDispatcher().onBackPressed(); + } } \ No newline at end of file diff --git a/app/src/main/java/com/app/wave/keyboard/ui/BaseActivity.kt b/app/src/main/java/com/app/wave/keyboard/ui/BaseActivity.kt new file mode 100644 index 0000000..4f24fbc --- /dev/null +++ b/app/src/main/java/com/app/wave/keyboard/ui/BaseActivity.kt @@ -0,0 +1,36 @@ +package com.app.wave.keyboard.ui + +import android.os.Bundle +import androidx.activity.OnBackPressedCallback +import androidx.appcompat.app.AppCompatActivity + +open class BaseActivity: AppCompatActivity() { + protected var backPressedCallback: OnBackPressedCallback? = null + /** 子类是否需要拦截返回 */ + protected open fun shouldInterceptBackPress(): Boolean = false + + /** 子类定义拦截后的操作(例如弹窗) */ + protected open fun onInterceptBackPressed() {} + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setupBackPressedCallback()//初始化back事件 + } + private fun setupBackPressedCallback() { + backPressedCallback = object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + if (shouldInterceptBackPress()) { + // 由子类处理拦截动作 + onInterceptBackPressed() + } else { + // 不拦截:关闭自己 + isEnabled = false + onBackPressedDispatcher.onBackPressed() + } + } + } + + onBackPressedDispatcher.addCallback(this, backPressedCallback!!) + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/app/wave/keyboard/ui/KeyboardPreviewActivity.kt b/app/src/main/java/com/app/wave/keyboard/ui/KeyboardPreviewActivity.kt index 2a0cc97..7f660d6 100644 --- a/app/src/main/java/com/app/wave/keyboard/ui/KeyboardPreviewActivity.kt +++ b/app/src/main/java/com/app/wave/keyboard/ui/KeyboardPreviewActivity.kt @@ -21,6 +21,7 @@ import androidx.core.view.isVisible import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView +import com.ad.tradpluslibrary.TPAdManager import com.app.wave.keyboard.App import com.app.wave.keyboard.R import com.app.wave.keyboard.bean.DetailsBean @@ -79,6 +80,7 @@ class KeyboardPreviewActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_keyboard_preview) + TPAdManager.loadAllAd(this) this.enableEdgeToEdge() ViewCompat.setOnApplyWindowInsetsListener( findViewById(R.id.main), @@ -94,6 +96,8 @@ class KeyboardPreviewActivity : AppCompatActivity() { setApply() onClick() setupScrollListener() // 添加滚动监听 + + TPAdManager.showTPAD(this) { } } private fun findViewId() { @@ -257,13 +261,15 @@ class KeyboardPreviewActivity : AppCompatActivity() { private fun setApply() { applyBtn.setOnClickListener { - val checkEnable = Comutils.checkEnable(this) - val checkSetDefault = Comutils.checkSetDefault(this) - if (!checkEnable || !checkSetDefault) { - showDialog() - return@setOnClickListener + TPAdManager.showTPAD(this@KeyboardPreviewActivity) { + val checkEnable = Comutils.checkEnable(this) + val checkSetDefault = Comutils.checkSetDefault(this) + if (!checkEnable || !checkSetDefault) { + showDialog() + return@showTPAD + } + startDown() } - startDown() } } diff --git a/app/src/main/java/com/app/wave/keyboard/ui/MainActivity.java b/app/src/main/java/com/app/wave/keyboard/ui/MainActivity.java index 098c2c1..68f55ef 100644 --- a/app/src/main/java/com/app/wave/keyboard/ui/MainActivity.java +++ b/app/src/main/java/com/app/wave/keyboard/ui/MainActivity.java @@ -15,6 +15,7 @@ import androidx.core.view.WindowInsetsCompat; import androidx.fragment.app.Fragment; import androidx.viewpager2.adapter.FragmentStateAdapter; +import com.ad.tradpluslibrary.TPAdManager; import com.app.wave.keyboard.R; import com.app.wave.keyboard.databinding.ActivityMainBinding; @@ -41,6 +42,12 @@ public class MainActivity extends AppCompatActivity { init(); } + @Override + protected void onResume() { + super.onResume(); + TPAdManager.INSTANCE.loadAllAd(this); + } + private void init() { List listFragment = new ArrayList<>(); listFragment.add(HomepageFragment.newInstance()); diff --git a/app/src/main/java/com/app/wave/keyboard/ui/MoreActivity.java b/app/src/main/java/com/app/wave/keyboard/ui/MoreActivity.java index 56e8b71..f34091a 100644 --- a/app/src/main/java/com/app/wave/keyboard/ui/MoreActivity.java +++ b/app/src/main/java/com/app/wave/keyboard/ui/MoreActivity.java @@ -10,7 +10,10 @@ import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import kotlin.Unit; +import kotlin.jvm.functions.Function0; +import com.ad.tradpluslibrary.TPAdManager; import com.app.wave.keyboard.App; import com.app.wave.keyboard.R; import com.app.wave.keyboard.bean.DetailsBean; @@ -21,7 +24,7 @@ import com.app.wave.keyboard.utils.ItemDeco; import android.graphics.Typeface; import java.util.List; -public class MoreActivity extends AppCompatActivity { +public class MoreActivity extends BaseActivity { private ActivityMoreBinding vb; public static final String KEY_NAME = "class_name"; @@ -34,6 +37,7 @@ public class MoreActivity extends AppCompatActivity { vb = ActivityMoreBinding.inflate(getLayoutInflater()); EdgeToEdge.enable(this); setContentView(vb.getRoot()); + TPAdManager.INSTANCE.loadAllAd(this); ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); @@ -69,7 +73,7 @@ public class MoreActivity extends AppCompatActivity { vb.back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - finish(); + onInterceptBackPressed(); } }); @@ -123,4 +127,25 @@ public class MoreActivity extends AppCompatActivity { vb.recycler.smoothScrollToPosition(0); } } + + + @Override + protected boolean shouldInterceptBackPress() { + return true; + } + + @Override + protected void onInterceptBackPressed() { + + TPAdManager.INSTANCE.showTPAD(this, new Function0() { + @Override + public Unit invoke() { + return null; + } + }); + if (getBackPressedCallback() != null) { + getBackPressedCallback().setEnabled(false); + } + getOnBackPressedDispatcher().onBackPressed(); + } } \ No newline at end of file diff --git a/app/src/main/java/com/app/wave/keyboard/ui/SplashActivity.kt b/app/src/main/java/com/app/wave/keyboard/ui/SplashActivity.kt index 40c2597..f97e991 100644 --- a/app/src/main/java/com/app/wave/keyboard/ui/SplashActivity.kt +++ b/app/src/main/java/com/app/wave/keyboard/ui/SplashActivity.kt @@ -8,6 +8,7 @@ import android.os.Handler import android.os.Looper import android.widget.ProgressBar import android.widget.TextView +import com.ad.tradpluslibrary.TPAdManager import com.app.wave.keyboard.R import com.app.wave.keyboard.utils.Comutils @@ -17,7 +18,7 @@ class SplashActivity : Activity() { private lateinit var progressPercentText: TextView private lateinit var versionText: TextView - private var totalTime = 2000L // 总时间2秒 + private var totalTime = 15000L // 总时间2秒 private lateinit var timer: CountDownTimer override fun onCreate(savedInstanceState: Bundle?) { @@ -54,8 +55,16 @@ class SplashActivity : Activity() { } private fun initProgressTimer() { - timer = object : CountDownTimer(totalTime, 100) { - override fun onTick(millisUntilFinished: Long) { + TPAdManager.init( + this, + "ocean", + "653761A12E966CCA5CB730718CF41011", + "3E25B1686AF335D6D70C4D152B388012", + "D718D5267BF72200494214E90AA05712", + "D92C25236B923A195FD38AA7939D4C12" + ) {} + timer = + TPAdManager.showWelcomeAd(this, totalTime, { millisUntilFinished -> // 计算进度百分比(递增逻辑) val progressPercentage = (100 * millisUntilFinished / totalTime).toInt() val countdownPercentage = 100 - progressPercentage @@ -66,9 +75,8 @@ class SplashActivity : Activity() { // 更新进度条和百分比显示 progressBar.progress = safePercentage progressPercentText.text = "$safePercentage%" - } - override fun onFinish() { + }) { // 完成时设置进度为100% progressBar.progress = 100 progressPercentText.text = "100%" @@ -76,12 +84,10 @@ class SplashActivity : Activity() { // 添加一个短暂的延迟,让用户看到100%的完成状态 Handler(Looper.getMainLooper()).postDelayed({ toHome() - }, 0) + }, 20) } - } + timer?.start() - // 启动计时器 - timer.start() } private fun toHome() { diff --git a/app/src/main/res/xml/net.xml b/app/src/main/res/xml/net.xml new file mode 100644 index 0000000..4c12327 --- /dev/null +++ b/app/src/main/res/xml/net.xml @@ -0,0 +1,6 @@ + + + + mobile-server.lux-ad.com + + \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 6b4974f..a66f3dd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,4 +3,6 @@ plugins { id("com.android.application") version "8.9.2" apply false id("org.jetbrains.kotlin.android") version "2.2.21" apply false kotlin("kapt") version "2.0.0" + id("com.google.gms.google-services") version "4.4.4" apply false + id("com.google.firebase.crashlytics") version "3.0.6" apply false } diff --git a/settings.gradle.kts b/settings.gradle.kts index 073fcc2..d44ef22 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -12,7 +12,27 @@ dependencyResolutionManagement { google() mavenCentral() maven("https://jitpack.io") + flatDir { + dirs("libs") + } + //------------------------- TradPlus + // Ironsource + maven { url = uri("https://android-sdk.is.com/") } + // Pangle + maven { url = uri("https://artifact.bytedance.com/repository/pangle") } + // Chartboost + maven { url = uri("https://cboost.jfrog.io/artifactory/chartboost-ads/") } + maven { + name = "Chartboost Mediation’s maven repo" + url = uri("https://cboost.jfrog.io/artifactory/chartboost-mediation") + } + // Mintegral + //Launch GP market application, Android X Version + //If you fail to pull the code using gradle, add the maven warehouse configuration to the project root build.gradle file + maven { + url = uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") + } } }