V1.0.3(3)

This commit is contained in:
litingting 2025-05-27 10:45:05 +08:00
parent 664bf9db56
commit ef3e9dd3a9
24 changed files with 106 additions and 180 deletions

6
.idea/compiler.xml generated
View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="21" />
</component>
</project>

19
.idea/gradle.xml generated
View File

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="CHOOSE_PER_TEST" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="jbr-17" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
</set>
</option>
</GradleProjectSettings>
</option>
</component>
</project>

6
.idea/kotlinc.xml generated
View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="KotlinJpsPluginSettings">
<option name="version" value="1.8.20" />
</component>
</project>

5
.idea/misc.xml generated
View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK" />
</project>

View File

@ -1,26 +0,0 @@
106f9be0e66f52f36eaaaff4dd231971
75939c4ce23c53ad9534d43be176b3e9
217e8f437c9fc4244d6e74653ac8a8c7
66b774de6608db14a84e972fba1ec954
e1c9ddef73e5621f62c717badf1be3f2
daaea35726ab7cd457ab61d4538fb822
b9b88d70c3d018bfbda46cd93ba3ddca
946dbe0d5ed7fee91c8ece64d035e70b
d41ed920405e4bd14f3a42cd93c43d89
7eac188d3286b05ccbba774f63a2c049
4df96d3bc9afd17b812e65e6c6add1ef
9f5a74f6ccfb81b48969231b39bf937f
eb3214f29c0a52815b41977d6cc9a46e
becf75b2cc99e82716da2e6697879509
7eec7b9476b99b3ce94533da4f2eb987
974322f19d813702ea048d95288d2b8c
95ff573e4cdf46a05f6c5ac703940db3
f281c2ca1b0ba69b5805badd314ef646
29015bbfcc182d80e7f75bd2c38e4521
ff22dbf67af979b8b3169a242d10f166
c4d1f1775f251f03dce94fdf267a7b89
dd2971b0681141d57b221687791ad1bd
86a0d598cde251321e21a0da4ab94065
74616804a7dc29147dfb0afe122a9fd2
35695de726f6044576c830bf197f36f7

Binary file not shown.

View File

@ -1,2 +0,0 @@
#Mon May 26 15:52:52 CST 2025
json=-1146317101

File diff suppressed because one or more lines are too long

View File

@ -1,6 +0,0 @@
#
#Mon May 26 15:52:52 CST 2025
4yWSuJdlSBRrsgCT2fEzZvNoBH0M1hzyqNP9ZiCTn0an2TBTdxk01Ips4aov__5L4dU8_sQpVw0_GOMLgIfJu_=VVN64VW3_CeQrIZ9sSUMQAWAS4XI14L2etylkN_E2IkJpZrsF6Xt26aMuwBGOboUiFvkTVJ28EbPW53NL_6SPT
BoZtE6LMU2QaUEowq3SoQFO_HqwztZQdgF3VZGmNRR17TGv0XhXSwlT6LiaRllitI7yAsCkSGo_pfE0yfipADf=wt2KAZMCf_SkV_coMIB7GWtaOQtCd2ZFRK8hFAQo7zbXpIGpG5iI0fZ0sMJr5n_cCO3LEVU66gpxe099OFXXvv
sdk_analysis_plugin_version=5.2.7
set_multidex=true

View File

@ -1,34 +0,0 @@
-keep class androidx.multidex.** { *; }
-keep class androidx.browser.customtabs.CustomTabsIntent { *; }
-keep class androidx.** {
*** startActivityForResult(***);
*** startActivity(***);
}
-keep class android.support.multidex.** { *; }
-keep class android.support.v4.app.** { *; }
-keep class com.google.android.gms.location.FusedLocationProviderApi { *; }
-keep class com.google.android.gms.location.LocationListener { *; }
-keep class io.fabric.sdk.android.** { *; }
-keep class okio.** { *; }
-keep class retrofit2.** { *; }
-keep class okhttp3.** { *; }
-keep class com.squareup.okhttp.** { *; }
-keep class com.android.volley.** { *; }
-keep class com.flurry.** { *; }
-keep class org.apache.** { *; }
-keep class com.applovin.** { *; }
-keep class com.google.android.gms.ads.** { *; }
-keep class com.ironsource.** { *; }
-keep class com.fyber.inneractive.** { *; }
-keep class com.vungle.** { *; }
-keep class com.unity3d.ads.** { *; }
-keep class com.unity3d.services.** { *; }
-keep class com.mintegral.msdk.** { *; }
-keep class com.mbridge.msdk.** { *; }
-keep class com.adcolony.sdk.** { *; }
-keep class com.inmobi.** { *; }
-keep class com.five_corp.** { *; }
-keep class com.bytedance.** { *; }
-keep class com.smaato.** { *; }
-keep class com.safedk.** { *; }
-keep class com.applovin.quality.** { *; }

View File

@ -23,8 +23,8 @@ android {
applicationId "com.keyboards.craft"
minSdk 23
targetSdk 34
versionCode 2
versionName "1.0.2"
versionCode 3
versionName "1.0.3"
setProperty("archivesBaseName", "Keyboardcraft-V" + versionName + "C${versionCode}-$timestamp")
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
@ -80,33 +80,29 @@ dependencies {
implementation("androidx.room:room-runtime:2.6.1")
//noinspection KaptUsageInsteadOfKsp
kapt("androidx.room:room-compiler:2.6.1")
implementation(platform("com.google.firebase:firebase-bom:32.2.2"))
implementation("com.google.firebase:firebase-analytics-ktx")
implementation("com.google.firebase:firebase-crashlytics-ktx")
implementation("com.google.firebase:firebase-config-ktx")
//--------------------MAX (BIGO AdsChartboostDT ExchangcGooglc Ad ManagcrGoogle Bidding and Google AdMobInMobiironSourceLiftoff Monetizc
//Meta Audience NetworkMolocoPanglcUnity Ads)
implementation("com.applovin:applovin-sdk:+")
implementation("com.applovin.mediation:bigoads-adapter:5.3.0.1")
implementation("com.applovin.mediation:chartboost-adapter:+")
implementation("com.google.android.gms:play-services-base:16.1.0")
implementation("com.applovin.mediation:fyber-adapter:+")
//Google Ad Manager
// implementation("com.applovin.mediation:google-ad-manager-adapter:+")
//Google Bidding and Google AdMob
// implementation("com.applovin.mediation:google-adapter:+")
implementation("com.applovin.mediation:inmobi-adapter:+")
implementation("com.squareup.picasso:picasso:2.71828")
implementation("androidx.recyclerview:recyclerview:1.1.0")
implementation("com.applovin.mediation:ironsource-adapter:+")
implementation("com.applovin.mediation:vungle-adapter:+")
implementation("com.applovin.mediation:facebook-adapter:+")
implementation("com.applovin.mediation:moloco-adapter:+")
implementation("com.applovin.mediation:bytedance-adapter:+")
implementation("com.applovin.mediation:unityads-adapter:+")
//Max(BIGO AdsChartboostDT ExchangeInMobiironSourceLiftoff MonetizeMintegralPangle)
implementation 'com.applovin:applovin-sdk:+'
implementation 'com.applovin.mediation:bigoads-adapter:+'
implementation 'com.applovin.mediation:chartboost-adapter:+'
implementation 'com.google.android.gms:play-services-base:16.1.0'
implementation 'com.applovin.mediation:fyber-adapter:+'
implementation 'com.applovin.mediation:inmobi-adapter:+'
implementation 'com.squareup.picasso:picasso:2.8'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'com.applovin.mediation:ironsource-adapter:+'
implementation 'com.applovin.mediation:vungle-adapter:+'
implementation 'com.applovin.mediation:mintegral-adapter:+'
implementation 'com.applovin.mediation:bytedance-adapter:+'
//gaid
implementation("com.google.android.gms:play-services-ads-identifier:18.0.1")

View File

@ -42,5 +42,6 @@ class CraftApp : Application() {
LocalBroadcastManager.getInstance(this@CraftApp).sendBroadcast(Intent(initAction));
}
})
}
}

View File

@ -35,6 +35,7 @@ class CategoryDetailsActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
binding = UiCategoryDetailsActivityBinding.inflate(layoutInflater)
setContentView(binding.root)
MaxManager.onLoadAd()
MaxManager.startShowMaxAd (this){ }
bean = intent.getSerializableExtra(CATEGORY_DETAILS_BEAN_KEY) as MainDataBean?
if (bean == null) {
@ -52,7 +53,13 @@ class CategoryDetailsActivity : AppCompatActivity() {
private fun initView() {
binding.titleTv.text = bean?.title
binding.backBtn.setOnClickListener { finish() }
binding.backBtn.setOnClickListener {
MaxManager.startShowMaxAd (this@CategoryDetailsActivity){
finish()
}
}
binding.refreshLayout.setEnableRefresh(false)
binding.refreshLayout.setOnLoadMoreListener {

View File

@ -39,9 +39,9 @@ class DetailsActivity : AppCompatActivity(), OnDownloadListener {
setContentView(binding.root)
bean = intent.getSerializableExtra(KEY_CRAFT_DETAILS_BEAN) as ItemDataBean?
val from = intent.getStringExtra(KEY_CRAFT_FROM)
if (from == "like") {
MaxManager.startShowMaxAd(this){}
}
MaxManager.onLoadAd()
MaxManager.startShowMaxAd(this) {}
initBar()
initView()
initData()
@ -55,7 +55,7 @@ class DetailsActivity : AppCompatActivity(), OnDownloadListener {
private fun initView() {
GlobalScope.launch {
val current = CraftApp.databaseManager.getItemDataBeanFileByPath(bean?.key!!)
withContext(Dispatchers.Main){
withContext(Dispatchers.Main) {
if (current?.isLiked == true) {
binding.likeImg.setImageResource(R.drawable.like_select_icon)
} else {
@ -67,46 +67,53 @@ class DetailsActivity : AppCompatActivity(), OnDownloadListener {
}
binding.likeBtn.setOnClickListener {
bean?.isLiked = bean?.isLiked != true
if (bean?.isLiked == true) {
binding.likeImg.setImageResource(R.drawable.like_select_icon)
} else {
binding.likeImg.setImageResource(R.drawable.like_unselect_icon)
}
GlobalScope.launch {
MaxManager.startShowMaxAd(this) {
bean?.isLiked = bean?.isLiked != true
if (bean?.isLiked == true) {
CraftApp.databaseManager.insertItemDataBeanFile(bean!!)
binding.likeImg.setImageResource(R.drawable.like_select_icon)
} else {
CraftApp.databaseManager.deleteItemDataBeanFile(bean!!)
binding.likeImg.setImageResource(R.drawable.like_unselect_icon)
}
GlobalScope.launch {
if (bean?.isLiked == true) {
CraftApp.databaseManager.insertItemDataBeanFile(bean!!)
} else {
CraftApp.databaseManager.deleteItemDataBeanFile(bean!!)
}
}
}
}
binding.titleTv.text = bean?.title
binding.backBtn.setOnClickListener { finish() }
binding.downBtn.setOnClickListener {
detailsBean?.let {
updateDownloadBtn(it)
val resourceHandler = ResourceDownloadUtil(this) // 传入当前上下文
resourceHandler.setOnDownloadListener(this)
val imageUrl = it.themeContent.androidRawZipUrl
val b = fileIsDownload(this, imageUrl)
if (b) {
MaxManager.startShowMaxAd(this@DetailsActivity) {
AppSharedPreferences(this).setCurrentlyThemeUrl(imageUrl)
val intent = Intent(this, PreviewActivity::class.java)
MaxManager.startShowMaxAd(this@DetailsActivity) {
detailsBean?.let {
updateDownloadBtn(it)
val resourceHandler = ResourceDownloadUtil(this@DetailsActivity) // 传入当前上下文
resourceHandler.setOnDownloadListener(this@DetailsActivity)
val imageUrl = it.themeContent.androidRawZipUrl
val b = fileIsDownload(this@DetailsActivity, imageUrl)
if (b) {
AppSharedPreferences(this@DetailsActivity).setCurrentlyThemeUrl(imageUrl)
val intent = Intent(this@DetailsActivity, PreviewActivity::class.java)
intent.putExtra(PreviewActivity.KEY_PREVIEW_URL, imageUrl)
startActivity(intent)
finish()
} else {
binding.loadingBar.visibility = View.VISIBLE
binding.downIcon.visibility = View.GONE
resourceHandler.downloadAndExtractResources(imageUrl)//文件不存在则下载
}
} else {
binding.loadingBar.visibility = View.VISIBLE
binding.downIcon.visibility = View.GONE
resourceHandler.downloadAndExtractResources(imageUrl)//文件不存在则下载
}
}
}
}
@ -181,14 +188,11 @@ class DetailsActivity : AppCompatActivity(), OnDownloadListener {
val imageUrl = detailsBean?.themeContent?.androidRawZipUrl
val b = fileIsDownload(this, imageUrl!!)
if (b) {
MaxManager.startShowMaxAd(this@DetailsActivity) {
AppSharedPreferences(this).setCurrentlyThemeUrl(imageUrl)
val intent = Intent(this, PreviewActivity::class.java)
intent.putExtra(PreviewActivity.KEY_PREVIEW_URL, imageUrl)
startActivity(intent)
finish()
}
}
}
}

View File

@ -24,6 +24,7 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentTransaction
import com.applovin.sdk.AppLovinSdk
import com.bumptech.glide.Glide
import com.keyboard.craft.fragment.HomeFragment
import com.keyboard.craft.fragment.LikeFragment
@ -54,9 +55,9 @@ class MainActivity : AppCompatActivity() {
initBar()
initView()
registerReceiver()
MaxManager.onLoadAd()
}
private fun initFragment() {
mFragments.clear()
mFragments.add(homeFragment)
@ -109,6 +110,7 @@ class MainActivity : AppCompatActivity() {
override fun onResume() {
super.onResume()
MaxManager.onLoadAd()
updateSetMyInputMethodHome()
}

View File

@ -155,7 +155,6 @@ class PreviewActivity : AppCompatActivity() {
override fun onDestroy() {
super.onDestroy()
unregisterReceiver()
MaxManager.onLoadAd()
}
private fun showKeyboard(view: View) {

View File

@ -14,7 +14,7 @@ import com.keyboard.craft.util.upload.SaveUtils.isPost
class SplashActivity : AppCompatActivity() {
private val SPLASH_TIME_OUT: Long = 10000
private val SPLASH_TIME_OUT: Long = 12000
private lateinit var binding: UiSplashActivityBinding
private lateinit var timer: CountDownTimer
@ -33,10 +33,13 @@ class SplashActivity : AppCompatActivity() {
countTime = SPLASH_TIME_OUT,
countAction = { millisUntilFinished ->
// 更新UI比如显示剩余秒数
Log.d("WelcomeActivity", "倒计时剩余:${millisUntilFinished / 1000}s")
val progressPercentage: Int = (100 * millisUntilFinished / SPLASH_TIME_OUT).toInt()
val Percentage = 100 - progressPercentage
binding.progressBar.progress = Percentage
},
goMainAction = {
// 倒计时或广告关闭后跳转主界面
binding.progressBar.progress = 100
startMain()
}
)

View File

@ -160,6 +160,7 @@ public class MaxManager {
public static void startShowMaxAd(Activity activity, onAdAfterAction listener) {
MaxManager.ShowAd(activity, type -> {
Log.d("CraftApp","type="+type);
if (type == MaxManager.type_show_close || type == MaxManager.type_show_fail || type == MaxManager.type_no_cache) {
if (listener != null)
listener.onAction();

View File

@ -0,0 +1,20 @@
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<corners android:radius="5dp" />
<solid android:color="@color/color_CECECE" />
</shape>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="20dp" />
<gradient
android:startColor="@color/banner_indicator_one_go_bg_color"
android:endColor="@color/banner_indicator_one_go_bg_color"
android:angle="0" />
</shape>
</clip>
</item>
</layer-list>

View File

@ -38,9 +38,13 @@
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="32dp"
android:indeterminateTint="#1FDCAF"
android:layout_height="32dp" />
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="7dp"
android:layout_marginStart="25dp"
android:layout_marginEnd="25dp"
android:progress="1"
android:progressDrawable="@drawable/progress_draw_welcome" />
<TextView
android:layout_width="wrap_content"

View File

@ -16,4 +16,5 @@
<color name="bg_color">#121927</color>
<color name="bg_color_l2">#303C55</color>
<color name="placeholder_bg_color">#B6DED6</color>
<color name="color_CECECE">#CECECE</color>
</resources>

View File

@ -1,22 +1,15 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
mavenCentral()
maven { url 'https://jitpack.io' }
maven { url 'https://artifacts.applovin.com/android' }
maven { url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea" }
maven { url "https://artifact.bytedance.com/repository/pangle" }
maven { url "https://cboost.jfrog.io/artifactory/chartboost-ads/"}
}
dependencies {
//max
classpath "com.applovin.quality:AppLovinQualityServiceGradlePlugin:5.2.7"
classpath "com.applovin.quality:AppLovinQualityServiceGradlePlugin:+"
}
}
plugins {
id 'com.android.application' version '8.4.0' apply false
id 'com.android.library' version '8.4.0' apply false
id 'com.android.application' version '8.1.3' apply false
id 'com.android.library' version '8.1.3' apply false
id 'org.jetbrains.kotlin.android' version '1.9.22' apply false
id 'com.google.gms.google-services' version "4.3.15" apply false
id 'com.google.firebase.crashlytics' version "2.9.5" apply false

View File

@ -6,7 +6,7 @@
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweacraft memory settings.
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
org.gradle.jvmargs=-Xmx4096m -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects

View File

@ -12,10 +12,10 @@ dependencyResolutionManagement {
google()
mavenCentral()
maven { url 'https://jitpack.io' }
maven { url 'https://artifacts.applovin.com/android' }
maven { url "https://cboost.jfrog.io/artifactory/chartboost-ads/" }
maven { url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea" }
maven { url "https://artifact.bytedance.com/repository/pangle" }
maven { url "https://cboost.jfrog.io/artifactory/chartboost-ads/"}
}
}
rootProject.name = "Keyboard Craft"