diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..898c033
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+SoundGags
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index d843f34..94a25f7 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -1,4 +1,6 @@
-
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 80898bb..e2a6e7e 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -6,6 +6,8 @@ plugins {
alias(libs.plugins.kotlin.android)
id("kotlin-kapt")
id("kotlin-parcelize")
+ id("com.google.gms.google-services")
+ id("com.google.firebase.crashlytics")
}
android {
@@ -18,8 +20,8 @@ android {
applicationId = "com.soundapp.soundgags"
minSdk = 26
targetSdk = 36
- versionCode = 3
- versionName = "3.0"
+ versionCode = 4
+ versionName = "4.0"
setProperty(
"archivesBaseName",
"Sound Gags_V" + versionName + "_${versionCode}$timeStamp"
@@ -68,4 +70,92 @@ dependencies {
implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.6.2")
implementation("androidx.activity:activity-ktx:1.10.1")
implementation("com.google.android.flexbox:flexbox:3.0.0")
+
+ implementation(files("libs/TradPlusLibrary_11_25_15_02-release.aar"))
+ implementation(files("libs/UpLoadLibrary_12_03_15_13-release.aar"))
+
+ implementation ("com.squareup.okhttp3:okhttp:4.12.0")
+ implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")
+
+ implementation ("com.google.android.gms:play-services-ads-identifier:18.0.1")
+
+ // TradPlus
+ implementation("com.tradplusad:tradplus:14.5.0.1")
+ //noinspection GradleCompatible
+ implementation("androidx.legacy:legacy-support-v4:1.0.0")
+ implementation("androidx.appcompat:appcompat:1.3.0-alpha02")
+ // Meta
+ implementation("com.facebook.android:audience-network-sdk:6.20.0")
+ implementation("com.tradplusad:tradplus-facebook:1.14.5.0.1")
+ // Applovin
+ implementation("com.applovin:applovin-sdk:13.3.1")
+ implementation("com.tradplusad:tradplus-applovin:9.14.5.0.1")
+ implementation("com.google.android.gms:play-services-ads-identifier:18.2.0")
+ // Ironsource
+ implementation("com.ironsource.sdk:mediationsdk:8.10.0")
+ implementation("com.tradplusad:tradplus-ironsource:10.14.5.0.1")
+ implementation("com.google.android.gms:play-services-appset:16.0.0")
+ implementation("com.google.android.gms:play-services-ads-identifier:17.0.0")
+ implementation("com.google.android.gms:play-services-basement:17.5.0")
+ // Adcolony
+ implementation("com.adcolony:sdk:4.8.0")
+ implementation("com.tradplusad:tradplus-adcolony:4.14.5.0.1")
+ implementation("com.google.android.gms:play-services-ads-identifier:17.0.0")
+ // Pangle
+ implementation("com.tradplusad:tradplus-pangle:19.14.5.0.1")
+ implementation("com.pangle.global:pag-sdk:7.3.0.3")
+ // UnityAds
+ implementation("com.tradplusad:tradplus-unity:5.14.5.0.1")
+ implementation("com.unity3d.ads:unity-ads:4.15.1")
+ // Chartboost
+ 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.14.5.0.1")
+ implementation("com.inmobi.monetization:inmobi-ads-kotlin:10.8.3")
+ implementation("androidx.core:core-ktx:1.5.0")
+ implementation("com.inmobi.omsdk:inmobi-omsdk:1.5.2.0")
+ // Fyber
+ implementation("com.fyber:marketplace-sdk:8.3.7")
+ implementation("com.tradplusad:tradplus-fyber:24.14.5.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")
+ // Start.io
+ implementation("com.startapp:inapp-sdk:5.2.3")
+ implementation("com.tradplusad:tradplus-startapp:28.14.5.0.1")
+ // Mintegral
+ implementation("com.tradplusad:tradplus-mintegralx_overseas:18.14.5.0.1")
+ implementation("androidx.recyclerview:recyclerview:1.1.0")
+ implementation("com.mbridge.msdk.oversea:mbridge_android_sdk:16.9.71")
+ // Liftoff
+ implementation("com.tradplusad:tradplus-vunglex:7.14.5.0.1")
+ implementation("com.vungle:vungle-ads:7.5.0")
+ // Yandex
+ implementation("com.yandex.android:mobileads:7.13.0") {
+ exclude(group = "com.caverock", module = "androidsvg-aar")
+ }
+ implementation("com.tradplusad:tradplus-yandex:50.14.6.10.1")
+ // Bigo
+ implementation("com.bigossp:bigo-ads:5.4.0")
+ implementation("com.tradplusad:tradplus-bigo:57.14.5.0.1")
+ // Cross Promotion
+ implementation("com.tradplusad:tradplus-crosspromotion:27.14.5.0.1")
+ // TP Exchange
+ // 请注意保持与主包版本同步更新
+ implementation("com.google.code.gson:gson:2.8.6")
+ implementation("com.tradplusad:tp_exchange:40.14.5.0.1")
+
+ // Google UMP
+ implementation ("com.google.android.ump:user-messaging-platform:3.2.0")
+
+ // TradPlus Tools
+ // implementation 'com.tradplusad:tradplus-tool:1.1.4'
+
+ //firebase
+ implementation(platform("com.google.firebase:firebase-bom:33.7.0"))
+ implementation("com.google.firebase:firebase-crashlytics")
+ implementation("com.google.firebase:firebase-analytics")
+ implementation("com.google.firebase:firebase-config")
}
\ No newline at end of file
diff --git a/app/google-services.json b/app/google-services.json
new file mode 100644
index 0000000..dd84446
--- /dev/null
+++ b/app/google-services.json
@@ -0,0 +1,29 @@
+{
+ "project_info": {
+ "project_number": "1039708218778",
+ "project_id": "sound-gags",
+ "storage_bucket": "sound-gags.firebasestorage.app"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:1039708218778:android:f00dc2f58e675e5d1d8623",
+ "android_client_info": {
+ "package_name": "com.soundapp.soundgags"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyCBz1rRYQ2Tsu0J_QsBkVxFW79zatUzDHU"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/app/libs/TradPlusLibrary_11_25_15_02-release.aar b/app/libs/TradPlusLibrary_11_25_15_02-release.aar
new file mode 100644
index 0000000..803bb1c
Binary files /dev/null and b/app/libs/TradPlusLibrary_11_25_15_02-release.aar differ
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 0000000..a3e30aa
Binary files /dev/null and b/app/libs/UpLoadLibrary_12_03_15_13-release.aar differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f297c70..a40a41c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -5,6 +5,7 @@
+
@@ -17,6 +18,7 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
+
android:supportsRtl="true"
android:name=".ReloadApplication"
android:theme="@style/Theme.SoundGags">
@@ -44,6 +46,9 @@
+
\ No newline at end of file
diff --git a/app/src/main/java/com/soundapp/soundgags/ReloadApplication.kt b/app/src/main/java/com/soundapp/soundgags/ReloadApplication.kt
index 033f752..751ac04 100644
--- a/app/src/main/java/com/soundapp/soundgags/ReloadApplication.kt
+++ b/app/src/main/java/com/soundapp/soundgags/ReloadApplication.kt
@@ -6,6 +6,7 @@ import android.util.Log
import com.soundapp.soundgags.datame.AppDataBase
import com.soundapp.soundgags.datame.Familiar
import com.soundapp.soundgags.setting.SetUtil
+import com.up.uploadlibrary.UpLoadManager
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@@ -17,11 +18,16 @@ class ReloadApplication : Application() {
lateinit var app: ReloadApplication
lateinit var typeface: Typeface
var familiars: List? = null
+ const val TAG = "ReloadApplication"
}
override fun onCreate() {
super.onCreate()
app = this
+ UpLoadManager.init(this, TAG) { _, _ ->
+ // 处理逻辑
+ Log.d(TAG, "upload success")
+ }
CoroutineScope(Dispatchers.IO).launch {
initializeDatabase()
}
diff --git a/app/src/main/java/com/soundapp/soundgags/ui/JokeViewerActivity.kt b/app/src/main/java/com/soundapp/soundgags/ui/JokeViewerActivity.kt
index c4ab389..9f6c989 100644
--- a/app/src/main/java/com/soundapp/soundgags/ui/JokeViewerActivity.kt
+++ b/app/src/main/java/com/soundapp/soundgags/ui/JokeViewerActivity.kt
@@ -5,6 +5,8 @@ import android.os.Bundle
import android.os.CountDownTimer
import android.os.Handler
import androidx.appcompat.app.AppCompatActivity
+import com.ad.tradpluslibrary.TPAdManager
+import com.soundapp.soundgags.ReloadApplication
import com.soundapp.soundgags.databinding.ActivityJokeViewBinding
import com.soundapp.soundgags.setting.TopBarUtils
@@ -12,6 +14,7 @@ class JokeViewerActivity : AppCompatActivity() {
private lateinit var binding : ActivityJokeViewBinding
private var handler: Handler = Handler()
private var countDownTimer: CountDownTimer? = null
+ private var time = 14000L
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -19,24 +22,35 @@ class JokeViewerActivity : AppCompatActivity() {
TopBarUtils.setLightStatusBar(this.window, true)
binding = ActivityJokeViewBinding.inflate(layoutInflater)
setContentView(binding.root)
- handler.postDelayed({
- val intent= Intent(
- this@JokeViewerActivity,
- CompleteListActivity::class.java
- )
- startActivity(intent)
- finish()
- }, 4000)
- countDownTimer = object : CountDownTimer(4000, 100) {
- override fun onTick(millisUntilFinished: Long) {
- val progress = ((4000 - millisUntilFinished) / 4000f * 100).toInt()
- binding.loadingPb.progress = progress
- }
-
- override fun onFinish() {
+ TPAdManager.init(
+ this@JokeViewerActivity,
+ ReloadApplication.TAG,
+ "7798CDAEFBC2B1541B8B57EC7CC47F11",
+ "8E399B2604C0EF55A6625E21F4B46712",
+ "CE1D9ADA9743A8C426104487344AF712",
+ "8641E7001CB301CE14BAE457B5570712"
+ ) {
+ null
+ }
+ countDownTimer = TPAdManager.showWelcomeAd(
+ this@JokeViewerActivity,
+ time,
+ { aLong ->
+ val progressPercentage = (100 * aLong) / time
+ val percentage = 100 - progressPercentage
+ binding.loadingPb.progress = percentage.toInt()
+ },
+ {
binding.loadingPb.progress = 100
+ val intent= Intent(
+ this@JokeViewerActivity,
+ CompleteListActivity::class.java
+ )
+ startActivity(intent)
+ finish()
}
- }.start()
+ )
+ countDownTimer?.start()
}
override fun onDestroy() {
diff --git a/app/src/main/java/com/soundapp/soundgags/ui/LocalMusicActivity.kt b/app/src/main/java/com/soundapp/soundgags/ui/LocalMusicActivity.kt
index e83a8a5..a6c9865 100644
--- a/app/src/main/java/com/soundapp/soundgags/ui/LocalMusicActivity.kt
+++ b/app/src/main/java/com/soundapp/soundgags/ui/LocalMusicActivity.kt
@@ -5,6 +5,7 @@ import android.os.Bundle
import android.os.Handler
import android.os.SystemClock
import androidx.appcompat.app.AppCompatActivity
+import com.ad.tradpluslibrary.TPAdManager.showTPAD
import com.soundapp.soundgags.R
import com.soundapp.soundgags.databinding.ActivityLocalMusicBinding
import com.soundapp.soundgags.setting.MediaPlayerManager
@@ -28,7 +29,7 @@ class LocalMusicActivity : AppCompatActivity() {
setContentView(binding!!.root)
record = MediaPlayerManager(this)
binding!!.audioTime.setText(R.string.time_init)
-
+ showTPAD(this){}
initClick()
}
diff --git a/app/src/main/java/com/soundapp/soundgags/ui/NowPlayingActivity.kt b/app/src/main/java/com/soundapp/soundgags/ui/NowPlayingActivity.kt
index d7dfd4a..b539ff9 100644
--- a/app/src/main/java/com/soundapp/soundgags/ui/NowPlayingActivity.kt
+++ b/app/src/main/java/com/soundapp/soundgags/ui/NowPlayingActivity.kt
@@ -15,6 +15,7 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.isVisible
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
+import com.ad.tradpluslibrary.TPAdManager.showTPAD
import com.soundapp.soundgags.setting.SetUtil
import com.soundapp.soundgags.R
import com.soundapp.soundgags.setting.TypeAdapter
@@ -51,6 +52,7 @@ class NowPlayingActivity : AppCompatActivity(), LikeUpClickListener,
setContentView(binding.root)
viewModel = ViewModelProvider(this)[MainViewModel::class.java]
popView = ClockChooseFragment(this, this)
+ showTPAD(this) {}
initView()
initAudio()
initClick()
@@ -79,34 +81,42 @@ class NowPlayingActivity : AppCompatActivity(), LikeUpClickListener,
private fun initClick() {
//播放按钮
binding.layoutPlay.setOnClickListener {
- val playing = binding.playing.isVisible
- if (playing) {
- if (mediaPlayer?.isPlaying == true) {
- mediaPlayer?.pause()
- showLoading(1)
- }
- } else {
- if (!mediaPlayer?.isPlaying!!) {
- mediaPlayer?.start()
- showLoading(2)
+ showTPAD(this) {
+ val playing = binding.playing.isVisible
+ if (playing) {
+ if (mediaPlayer?.isPlaying == true) {
+ mediaPlayer?.pause()
+ showLoading(1)
+ }
+ } else {
+ if (!mediaPlayer?.isPlaying!!) {
+ mediaPlayer?.start()
+ showLoading(2)
+ }
}
}
+
}
//弹出倒计时
binding.imTimer.setOnClickListener {
- popView.showTop(binding.imTimer)
+ showTPAD(this) {
+ popView.showTop(binding.imTimer)
+ }
}
//like
binding.imLike.setOnClickListener {
- val isSelected = binding.imLike.isSelected
- if(isSelected){
- viewModel.updateLikeStatus(data.name,false)
- }else{
- viewModel.updateLikeStatus(data.name,true)
- }
- binding.imLike.isSelected = !isSelected
+ showTPAD(this) {
+ val isSelected = binding.imLike.isSelected
+ if (isSelected) {
+ viewModel.updateLikeStatus(data.name, false)
+ } else {
+ viewModel.updateLikeStatus(data.name, true)
+ }
+ binding.imLike.isSelected = !isSelected
+ }
}
+
}
private fun initAudio() {
@@ -224,7 +234,7 @@ class NowPlayingActivity : AppCompatActivity(), LikeUpClickListener,
}
}
- override fun onMoreClick(reflection: Reflection,isAdd: Boolean) {
+ override fun onMoreClick(reflection: Reflection, isAdd: Boolean) {
val intent = Intent(this, NowPlayingActivity::class.java)
intent.putExtra(KEY_LIST_DATA, reflection)
startActivity(intent)
diff --git a/app/src/main/java/com/soundapp/soundgags/ui/OpenSetActivity.kt b/app/src/main/java/com/soundapp/soundgags/ui/OpenSetActivity.kt
index 63894cc..dbe7f75 100644
--- a/app/src/main/java/com/soundapp/soundgags/ui/OpenSetActivity.kt
+++ b/app/src/main/java/com/soundapp/soundgags/ui/OpenSetActivity.kt
@@ -3,6 +3,7 @@ package com.soundapp.soundgags.ui
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.GridLayoutManager
+import com.ad.tradpluslibrary.TPAdManager.showTPAD
import com.soundapp.soundgags.setting.TypeAdapter
import com.soundapp.soundgags.datame.Familiar
import com.bumptech.glide.Glide
@@ -38,6 +39,6 @@ class OpenSetActivity : AppCompatActivity() {
binding.recyclerView.adapter = adapter
binding.recyclerView.layoutManager = GridLayoutManager(this, 3)
adapter.setList(data.infolist)
- binding.back.setOnClickListener { finish() }
+ binding.back.setOnClickListener { showTPAD(this){finish()} }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/soundapp/soundgags/ui/VoiceRecorderActivity.kt b/app/src/main/java/com/soundapp/soundgags/ui/VoiceRecorderActivity.kt
index 7d36431..fc61ce7 100644
--- a/app/src/main/java/com/soundapp/soundgags/ui/VoiceRecorderActivity.kt
+++ b/app/src/main/java/com/soundapp/soundgags/ui/VoiceRecorderActivity.kt
@@ -20,6 +20,7 @@ import java.io.File
import java.io.FileOutputStream
import java.io.IOException
import androidx.core.net.toUri
+import com.ad.tradpluslibrary.TPAdManager.showTPAD
import com.soundapp.soundgags.databinding.ActivityVoiceRecorderBinding
import com.soundapp.soundgags.setting.TopBarUtils
@@ -126,7 +127,9 @@ class VoiceRecorderActivity : AppCompatActivity() {
private fun initEvent() {
binding.back.setOnClickListener { finish() }
binding.audioTimeLayout.setOnClickListener {
- binding.btnPlay.isSelected = !binding.btnPlay.isSelected
+ showTPAD(this){
+ binding.btnPlay.isSelected = !binding.btnPlay.isSelected
+ }
try {
togglePrank()
} catch (e: IOException) {
@@ -135,6 +138,7 @@ class VoiceRecorderActivity : AppCompatActivity() {
}
binding.save.setOnClickListener {
+ showTPAD(this){}
val name = binding.saveEdit.text.toString().trim()
viewModel.checkSaveStatus(name, callback = { isSave ->
runOnUiThread {
diff --git a/app/src/main/res/xml/net.xml b/app/src/main/res/xml/net.xml
new file mode 100644
index 0000000..0ac6102
--- /dev/null
+++ b/app/src/main/res/xml/net.xml
@@ -0,0 +1,6 @@
+
+
+
+ mobile-server.lux-ad.com
+
+
diff --git a/build.gradle.kts b/build.gradle.kts
index 922f551..935d953 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -2,4 +2,6 @@
plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.kotlin.android) apply false
+ id("com.google.gms.google-services") version "4.4.2" apply false
+ id ("com.google.firebase.crashlytics") version "3.0.2" apply false
}
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index 20e2a01..a9bcbe8 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -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 tweaking memory settings.
-org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=U
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. For more details, visit
# https://developer.android.com/r/tools/gradle-multi-project-decoupled-projects
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 745f200..91aca72 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -16,6 +16,26 @@ dependencyResolutionManagement {
repositories {
google()
mavenCentral()
+ //------------------------- 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")
+ }
}
}