commit a7d8649aa42a3303f1d555d7133631d2543eb080 Author: litingting Date: Wed Jul 9 15:57:40 2025 +0800 V1.0(1) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/ThePrankApp.jks b/app/ThePrankApp.jks new file mode 100644 index 0000000..32e33fa Binary files /dev/null and b/app/ThePrankApp.jks differ diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 0000000..6eefe42 --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,65 @@ +import java.util.Date +import java.text.SimpleDateFormat +plugins { + id("com.android.application") + id("org.jetbrains.kotlin.android") + id("io.objectbox") +} +val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date()) +android { + namespace = "com.prank.app.color" + compileSdk = 35 + + defaultConfig { + //com.prank.app.color + applicationId = "com.prank.app.color" + minSdk = 24 + //noinspection OldTargetApi + targetSdk = 35 + versionCode = 1 + versionName = "1.0" + setProperty("archivesBaseName", "The Prank App_V" + versionName + "(${versionCode})_$timestamp") + testInstrumentationRunner = "androidx.sounds.runner.AndroidJUnitRunner" + vectorDrawables { + useSupportLibrary = true + } + } + + buildTypes { + release { + isMinifyEnabled = true + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + kotlinOptions { + jvmTarget = "17" + } + buildFeatures { + viewBinding = true + } + + packaging { + resources { + excludes += "/META-INF/{AL2.0,LGPL2.1}" + } + } +} + +dependencies { +implementation("androidx.appcompat:appcompat:1.6.1") + implementation("com.google.android.material:material:1.12.0") + implementation("androidx.constraintlayout:constraintlayout:2.1.4") + implementation("androidx.legacy:legacy-support-v4:1.0.0") + implementation("androidx.recyclerview:recyclerview:1.3.2") + implementation ("com.github.bumptech.glide:glide:4.16.0") + implementation ("com.airbnb.android:lottie:5.2.0") + + +} \ No newline at end of file diff --git a/app/keystore.properties b/app/keystore.properties new file mode 100644 index 0000000..aa07a75 --- /dev/null +++ b/app/keystore.properties @@ -0,0 +1,6 @@ +app_name=The Prank App +package_name=com.prank.app.color +keystoreFile=app/ThePrankApp.jks +key_alias=ThePrankAppkey0 +key_store_password=ThePrankApp +key_password=ThePrankApp \ No newline at end of file diff --git a/app/objectbox-models/default.json b/app/objectbox-models/default.json new file mode 100644 index 0000000..4263988 --- /dev/null +++ b/app/objectbox-models/default.json @@ -0,0 +1,156 @@ +{ + "_note1": "KEEP THIS FILE! Check it into a version control system (VCS) like git.", + "_note2": "ObjectBox manages crucial IDs for your object model. See docs for details.", + "_note3": "If you have VCS merge conflicts, you must resolve them according to ObjectBox docs.", + "entities": [ + { + "id": "11:8334073788849786621", + "lastPropertyId": "7:6219244463945872074", + "name": "MyInfo", + "properties": [ + { + "id": "1:3846004680686214718", + "name": "id", + "type": 6, + "flags": 1 + }, + { + "id": "2:1072405592606868493", + "name": "name", + "type": 9 + }, + { + "id": "3:6403945971117545375", + "name": "covert", + "type": 9 + }, + { + "id": "4:8380391915022128542", + "name": "audioUrl", + "type": 9 + }, + { + "id": "5:5397337392918335861", + "name": "isLike", + "type": 1 + }, + { + "id": "6:8617726678385755040", + "name": "isCustomization", + "type": 1 + }, + { + "id": "7:6219244463945872074", + "name": "colorIndex", + "type": 5 + } + ], + "relations": [] + }, + { + "id": "12:7791718854306958632", + "lastPropertyId": "3:3330767539776973000", + "name": "MyData", + "properties": [ + { + "id": "1:5827703478183087545", + "name": "id", + "type": 6, + "flags": 1 + }, + { + "id": "2:5710656991412853927", + "name": "name", + "type": 9 + }, + { + "id": "3:3330767539776973000", + "name": "covert", + "type": 9 + } + ], + "relations": [ + { + "id": "8:2847291413808145389", + "name": "infoList", + "targetId": "11:8334073788849786621" + } + ] + } + ], + "lastEntityId": "12:7791718854306958632", + "lastIndexId": "0:0", + "lastRelationId": "8:2847291413808145389", + "lastSequenceId": "0:0", + "modelVersion": 5, + "modelVersionParserMinimum": 5, + "retiredEntityUids": [ + 6644187494744704837, + 5451755925324613900, + 5341528467384834198, + 8669262289368091330, + 8810616757821398748, + 6372494608185382462, + 260548638537148495, + 6171058126503557976, + 8739827070759887179, + 8085616393527895261 + ], + "retiredIndexUids": [], + "retiredPropertyUids": [ + 3737650329028529369, + 4763378658873693443, + 125364974873863130, + 2528835553105827913, + 4125097520975656265, + 1927156637783361412, + 6438478261519714898, + 2535158628950494443, + 4963029281587776266, + 8017263761729239946, + 3918234626049153042, + 4840800811073356695, + 930394402218217369, + 1357489842440803099, + 783114452691941347, + 881748992619560888, + 95077662452914291, + 7000351314398811626, + 3982750000194227585, + 5235585844249440522, + 3371160825837869454, + 9088572167887595053, + 2294045821758826971, + 6190783800393335475, + 6856939928119969590, + 9041548896743223717, + 4243540562679615259, + 3106056562243875264, + 7411940719916723671, + 8627564250033438412, + 2362105308234412259, + 6967435104198349134, + 9068611668884650878, + 1871289416013564443, + 6461488128394318327, + 1026277688866110674, + 2521498030617118564, + 2583438008647218971, + 731259648768476447, + 5851268731306509989, + 7559103671740386544, + 146773896596794310, + 5478293265216175724, + 5188652570119820578 + ], + "retiredRelationUids": [ + 4497042841980461487, + 5723529287069432111, + 8439944504818566677, + 6781268415547019296, + 2600628166471439351, + 6610744321567014290, + 3875887204039397939 + ], + "version": 1 +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..4428e3a --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,51 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile +-useuniqueclassmembernames +-keepattributes SourceFile,LineNumberTable + +-keepclassmembers class * implements java.io.Serializable { + +static final long serialVersionUID; + +private static final java.io.ObjectStreamField[] serialPersistentFields; + +private void writeObject(java.io.ObjectOutputStream); + +private void readObject(java.io.ObjectInputStream); + +java.lang.Object writeReplace(); + +java.lang.Object readResolve(); + +} + + +# 保留Processor类,这些类用于在编译时生成ObjectBox需要的代码 +-keep @io.objectbox.annotation.processor.Processor class * { + *; +} + +# 保留ObjectBox的关键方法和构造函数 +-keepclassmembers class * extends io.objectbox.Box { + (...); + ; +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..2e519ee --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/assets/prank.json b/app/src/main/assets/prank.json new file mode 100644 index 0000000..7539667 --- /dev/null +++ b/app/src/main/assets/prank.json @@ -0,0 +1,3791 @@ +[ + + + { + "categoryId": "625f83491fea07887e619068", + "categoryName": "Door Bell", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Door Bell.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Door Bell/funny_doorbell_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Door Bell.png", + "title": "Door Bell 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Door Bell/funny_doorbell_10.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Door Bell.png", + "title": "Door Bell 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Door Bell/funny_doorbell_2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Door Bell.png", + "title": "Door Bell 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Door Bell/funny_doorbell_3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Door Bell.png", + "title": "Door Bell 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Door Bell/funny_doorbell_4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Door Bell.png", + "title": "Door Bell 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Door Bell/funny_doorbell_5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Door Bell.png", + "title": "Door Bell 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Door Bell/funny_doorbell_6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Door Bell.png", + "title": "Door Bell 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Door Bell/funny_doorbell_7.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Door Bell.png", + "title": "Door Bell 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Door Bell/funny_doorbell_8.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Door Bell.png", + "title": "Door Bell 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Door Bell/funny_doorbell_9.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Door Bell.png", + "title": "Door Bell 10" + } + ] + }, + { + "categoryId": "625f83491fea07887e61906a", + "categoryName": "Gun", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Gun.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Gun/gun_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Gun.png", + "title": "Gun 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Gun/gun_10.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Gun.png", + "title": "Gun 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Gun/gun_11.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Gun.png", + "title": "Gun 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Gun/gun_12.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Gun.png", + "title": "Gun 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Gun/gun_13.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Gun.png", + "title": "Gun 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Gun/gun_2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Gun.png", + "title": "Gun 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Gun/gun_3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Gun.png", + "title": "Gun 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Gun/gun_4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Gun.png", + "title": "Gun 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Gun/gun_5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Gun.png", + "title": "Gun 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Gun/gun_6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Gun.png", + "title": "Gun 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Gun/gun_7.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Gun.png", + "title": "Gun 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Gun/gun_8.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Gun.png", + "title": "Gun 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Gun/gun_9.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Gun.png", + "title": "Gun 13" + } + ] + }, + { + "categoryId": "625f83491fea07887e61906c", + "categoryName": "Laughing \u0026 Clapping", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Laughing \u0026 clapping.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Laughing _ Clapping/laughing_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Laughing \u0026 clapping.png", + "title": "Laughing \u0026 Clapping 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Laughing _ Clapping/laughing_2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Laughing \u0026 clapping.png", + "title": "Laughing \u0026 Clapping 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Laughing _ Clapping/laughing_3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Laughing \u0026 clapping.png", + "title": "Laughing \u0026 Clapping 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Laughing _ Clapping/laughing_4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Laughing \u0026 clapping.png", + "title": "Laughing \u0026 Clapping 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Laughing _ Clapping/laughing_5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Laughing \u0026 clapping.png", + "title": "Laughing \u0026 Clapping 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Laughing _ Clapping/laughing_6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Laughing \u0026 clapping.png", + "title": "Laughing \u0026 Clapping 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Laughing _ Clapping/laughing_7.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Laughing \u0026 clapping.png", + "title": "Laughing \u0026 Clapping 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Laughing _ Clapping/laughing_8.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Laughing \u0026 clapping.png", + "title": "Laughing \u0026 Clapping 8" + } + ] + }, + { + "categoryId": "625f83491fea07887e61906d", + "categoryName": "Man Cough", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Man Cough.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Man Cough/funny_man_cough_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Man Cough.png", + "title": "Man Cough 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Man Cough/funny_man_cough_2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Man Cough.png", + "title": "Man Cough 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Man Cough/funny_man_cough_3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Man Cough.png", + "title": "Man Cough 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Man Cough/funny_man_cough_4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Man Cough.png", + "title": "Man Cough 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Man Cough/funny_man_cough_5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Man Cough.png", + "title": "Man Cough 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Man Cough/funny_man_cough_strong_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Man Cough.png", + "title": "Man Cough 6" + } + ] + }, + { + "categoryId": "625f83491fea07887e61906e", + "categoryName": "Man Sneeze", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Man Sneeze.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Man Sneeze/funny_man_sneeze_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Man Sneeze.png", + "title": "Man Sneeze 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Man Sneeze/funny_man_sneeze_2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Man Sneeze.png", + "title": "Man Sneeze 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Man Sneeze/funny_man_sneeze_3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Man Sneeze.png", + "title": "Man Sneeze 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Man Sneeze/funny_man_sneeze_4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Man Sneeze.png", + "title": "Man Sneeze 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Man Sneeze/funny_man_sneeze_5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Man Sneeze.png", + "title": "Man Sneeze 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Man Sneeze/funny_man_sneeze_strong_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Man Sneeze.png", + "title": "Man Sneeze 6" + } + ] + }, + { + "categoryId": "625f83491fea07887e61906f", + "categoryName": "Police", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Police.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Police/funny_police_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Police.png", + "title": "Police 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Police/funny_police_2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Police.png", + "title": "Police 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Police/funny_police_3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Police.png", + "title": "Police 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Police/funny_police_4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Police.png", + "title": "Police 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Police/funny_police_5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Police.png", + "title": "Police 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Police/funny_police_6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Police.png", + "title": "Police 6" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd42", + "categoryName": "Cuckoo Clock", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Cuckoo Clock.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Cuckoo Clock/Cuckoo Clock01.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Cuckoo Clock/Cuckoo Clock01.png", + "title": "Cuckoo Clock 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Cuckoo Clock/Cuckoo Clock02.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Cuckoo Clock/Cuckoo Clock02.png", + "title": "Cuckoo Clock 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Cuckoo Clock/Cuckoo Clock03.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Cuckoo Clock/Cuckoo Clock03.png", + "title": "Cuckoo Clock 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Cuckoo Clock/Cuckoo Clock04.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Cuckoo Clock/Cuckoo Clock04.png", + "title": "Cuckoo Clock 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Cuckoo Clock/Cuckoo Clock05.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Cuckoo Clock/Cuckoo Clock05.png", + "title": "Cuckoo Clock 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Cuckoo Clock/Cuckoo Clock06.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Cuckoo Clock/Cuckoo Clock06.png", + "title": "Cuckoo Clock 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Cuckoo Clock/Cuckoo Clock07.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Cuckoo Clock/Cuckoo Clock07.png", + "title": "Cuckoo Clock 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Cuckoo Clock/Cuckoo Clock08.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Cuckoo Clock/Cuckoo Clock08.png", + "title": "Cuckoo Clock 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Cuckoo Clock/Cuckoo Clock09.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Cuckoo Clock/Cuckoo Clock09.png", + "title": "Cuckoo Clock 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Cuckoo Clock/Cuckoo Clock10.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Cuckoo Clock/Cuckoo Clock10.png", + "title": "Cuckoo Clock 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Cuckoo Clock/Cuckoo Clock11.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Cuckoo Clock/Cuckoo Clock11.png", + "title": "Cuckoo Clock 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Cuckoo Clock/Cuckoo Clock12.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Cuckoo Clock/Cuckoo Clock12.png", + "title": "Cuckoo Clock 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Cuckoo Clock/Cuckoo Clock13.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Cuckoo Clock/Cuckoo Clock13.png", + "title": "Cuckoo Clock 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Cuckoo Clock/Cuckoo Clock14.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Cuckoo Clock/Cuckoo Clock14.png", + "title": "Cuckoo Clock 14" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Cuckoo Clock/Cuckoo Clock15.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Cuckoo Clock/Cuckoo Clock15.png", + "title": "Cuckoo Clock 15" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Cuckoo Clock/Cuckoo Clock16.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Cuckoo Clock/Cuckoo Clock16.png", + "title": "Cuckoo Clock 16" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd43", + "categoryName": "Fireworks", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Fireworks.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fireworks/Fireworks Rocket01.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fireworks/Fireworks Rocket01.png", + "title": "Fireworks 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fireworks/Fireworks Rocket02.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fireworks/Fireworks Rocket02.png", + "title": "Fireworks 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fireworks/Fireworks01.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fireworks/Fireworks01.png", + "title": "Fireworks 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fireworks/Fireworks02.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fireworks/Fireworks02.png", + "title": "Fireworks 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fireworks/Fireworks03.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fireworks/Fireworks03.png", + "title": "Fireworks 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fireworks/Kisspng fireworks cake.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fireworks/Kisspng fireworks cake.png", + "title": "Fireworks 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fireworks/Paper fireworks01.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fireworks/Paper fireworks01.png", + "title": "Fireworks 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fireworks/Paper fireworks02.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fireworks/Paper fireworks02.png", + "title": "Fireworks 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fireworks/Sparkler Fireworks01.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fireworks/Sparkler Fireworks01.png", + "title": "Fireworks 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fireworks/Sparkler Fireworks02.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fireworks/Sparkler Fireworks02.png", + "title": "Fireworks 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fireworks/Tet fireworks01.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fireworks/Tet fireworks01.png", + "title": "Fireworks 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fireworks/Tet fireworks02.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fireworks/Tet fireworks02.png", + "title": "Fireworks 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fireworks/Tet fireworks03.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fireworks/Tet fireworks03.png", + "title": "Fireworks 14" + } + ] + }, + { + "categoryId": "625f83491fea07887e619069", + "categoryName": "Fart Sound", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Fart Sound.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_dj_initial.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Sound.png", + "title": "Fart Sound 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_dj_short.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Sound.png", + "title": "Fart Sound 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_fart_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Sound.png", + "title": "Fart Sound 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_fart_10.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Sound.png", + "title": "Fart Sound 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_fart_11.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Sound.png", + "title": "Fart Sound 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_fart_12.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Sound.png", + "title": "Fart Sound 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_fart_13.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Sound.png", + "title": "Fart Sound 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_fart_14.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Sound.png", + "title": "Fart Sound 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_fart_15.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Sound.png", + "title": "Fart Sound 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_fart_2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Sound.png", + "title": "Fart Sound 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_fart_3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Sound.png", + "title": "Fart Sound 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_fart_4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Sound.png", + "title": "Fart Sound 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_fart_5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Sound.png", + "title": "Fart Sound 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_fart_6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Sound.png", + "title": "Fart Sound 14" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_fart_7.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Sound.png", + "title": "Fart Sound 15" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_fart_8.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Sound.png", + "title": "Fart Sound 16" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_fart_9.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Sound.png", + "title": "Fart Sound 17" + } + ] + }, + { + "categoryId": "625f83491fea07887e61906b", + "categoryName": "Hair Clipper", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Hair Clipper.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Hair Clipper/hairclipper_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Hair Clipper.png", + "title": "Hair Clipper 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Hair Clipper/hairclipper_10.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Hair Clipper.png", + "title": "Hair Clipper 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Hair Clipper/hairclipper_11.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Hair Clipper.png", + "title": "Hair Clipper 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Hair Clipper/hairclipper_12.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Hair Clipper.png", + "title": "Hair Clipper 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Hair Clipper/hairclipper_2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Hair Clipper.png", + "title": "Hair Clipper 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Hair Clipper/hairclipper_3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Hair Clipper.png", + "title": "Hair Clipper 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Hair Clipper/hairclipper_4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Hair Clipper.png", + "title": "Hair Clipper 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Hair Clipper/hairclipper_5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Hair Clipper.png", + "title": "Hair Clipper 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Hair Clipper/hairclipper_6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Hair Clipper.png", + "title": "Hair Clipper 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Hair Clipper/hairclipper_7.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Hair Clipper.png", + "title": "Hair Clipper 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Hair Clipper/hairclipper_8.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Hair Clipper.png", + "title": "Hair Clipper 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Hair Clipper/hairclipper_9.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Hair Clipper.png", + "title": "Hair Clipper 12" + } + ] + }, + { + "categoryId": "625f83491fea07887e619064", + "categoryName": "Baby Sneeze", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Baby Sneeze.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Baby Sneeze/funny_baby_sneeze_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Baby Sneeze.png", + "title": "Baby Sneeze 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Baby Sneeze/funny_baby_sneeze_2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Baby Sneeze.png", + "title": "Baby Sneeze 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Baby Sneeze/funny_baby_sneeze_3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Baby Sneeze.png", + "title": "Baby Sneeze 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Baby Sneeze/funny_baby_sneeze_4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Baby Sneeze.png", + "title": "Baby Sneeze 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Baby Sneeze/funny_baby_sneeze_5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Baby Sneeze.png", + "title": "Baby Sneeze 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Baby Sneeze/funny_baby_sneeze_6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Baby Sneeze.png", + "title": "Baby Sneeze 6" + } + ] + }, + { + "categoryId": "625f83491fea07887e619065", + "categoryName": "Breaking", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Breaking.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Breaking/breaking_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Breaking.png", + "title": "Breaking 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Breaking/breaking_10.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Breaking.png", + "title": "Breaking 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Breaking/breaking_2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Breaking.png", + "title": "Breaking 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Breaking/breaking_3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Breaking.png", + "title": "Breaking 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Breaking/breaking_4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Breaking.png", + "title": "Breaking 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Breaking/breaking_5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Breaking.png", + "title": "Breaking 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Breaking/breaking_6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Breaking.png", + "title": "Breaking 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Breaking/breaking_7.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Breaking.png", + "title": "Breaking 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Breaking/breaking_8.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Breaking.png", + "title": "Breaking 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Breaking/breaking_9.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Breaking.png", + "title": "Breaking 10" + } + ] + }, + { + "categoryId": "625f83491fea07887e619063", + "categoryName": "Airhorn", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Airhorn.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Airhorn/funny_airhorn_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Airhorn.png", + "title": "Airhorn 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Airhorn/funny_airhorn_2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Airhorn.png", + "title": "Airhorn 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Airhorn/funny_airhorn_3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Airhorn.png", + "title": "Airhorn 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Airhorn/funny_airhorn_4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Airhorn.png", + "title": "Airhorn 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Airhorn/funny_airhorn_5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Airhorn.png", + "title": "Airhorn 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Airhorn/funny_airhorn_6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Airhorn.png", + "title": "Airhorn 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Airhorn/funny_airhorn_7.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Airhorn.png", + "title": "Airhorn 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Airhorn/funny_airhorn_8.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Airhorn.png", + "title": "Airhorn 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Airhorn/funny_airhorn_9.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Airhorn.png", + "title": "Airhorn 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Airhorn/funny_airhorn_10.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Airhorn.png", + "title": "Airhorn 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Airhorn/funny_airhorn_11.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Airhorn.png", + "title": "Airhorn 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Airhorn/funny_airhorn_12.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Airhorn.png", + "title": "Airhorn 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Airhorn/funny_airhorn_13.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Airhorn.png", + "title": "Airhorn 13" + } + ] + }, + { + "categoryId": "625f83491fea07887e619071", + "categoryName": "Toilet Flushing", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Toilet Flushing.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Toilet Flushing/toiletflushing_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Toilet Flushing.png", + "title": "Toilet Flushing 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Toilet Flushing/toiletflushing_2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Toilet Flushing.png", + "title": "Toilet Flushing 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Toilet Flushing/toiletflushing_3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Toilet Flushing.png", + "title": "Toilet Flushing 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Toilet Flushing/toiletflushing_4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Toilet Flushing.png", + "title": "Toilet Flushing 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Toilet Flushing/toiletflushing_5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Toilet Flushing.png", + "title": "Toilet Flushing 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Toilet Flushing/toiletflushing_6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Toilet Flushing.png", + "title": "Toilet Flushing 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Toilet Flushing/toiletflushing_7.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Toilet Flushing.png", + "title": "Toilet Flushing 7" + } + ] + }, + { + "categoryId": "625f83491fea07887e619072", + "categoryName": "Woman Cough", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Woman Cough.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Woman Cough/funny_woman_cough_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Woman Cough.png", + "title": "Woman Cough 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Woman Cough/funny_woman_cough_2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Woman Cough.png", + "title": "Woman Cough 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Woman Cough/funny_woman_cough_3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Woman Cough.png", + "title": "Woman Cough 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Woman Cough/funny_woman_cough_4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Woman Cough.png", + "title": "Woman Cough 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Woman Cough/funny_woman_cough_5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Woman Cough.png", + "title": "Woman Cough 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Woman Cough/funny_woman_cough_6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Woman Cough.png", + "title": "Woman Cough 6" + } + ] + }, + { + "categoryId": "625f83491fea07887e619073", + "categoryName": "Woman Sneeze", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Woman Sneeze.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Woman Sneeze/funny_woman_sneeze_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Woman Sneeze.png", + "title": "Woman Sneeze 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Woman Sneeze/funny_woman_sneeze_2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Woman Sneeze.png", + "title": "Woman Sneeze 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Woman Sneeze/funny_woman_sneeze_3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Woman Sneeze.png", + "title": "Woman Sneeze 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Woman Sneeze/funny_woman_sneeze_4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Woman Sneeze.png", + "title": "Woman Sneeze 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Woman Sneeze/funny_woman_sneeze_5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Woman Sneeze.png", + "title": "Woman Sneeze 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Woman Sneeze/funny_woman_sneeze_6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Woman Sneeze.png", + "title": "Woman Sneeze 6" + } + ] + }, + { + "categoryId": "6260b076d7ddc35b5bd96175", + "categoryName": "Fart Song", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Fart Song.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_song_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Song.png", + "title": "Fart Song 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_song_10.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Song.png", + "title": "Fart Song 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_song_11.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Song.png", + "title": "Fart Song 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_song_12.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Song.png", + "title": "Fart Song 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_song_2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Song.png", + "title": "Fart Song 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_song_3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Song.png", + "title": "Fart Song 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_song_4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Song.png", + "title": "Fart Song 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_song_5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Song.png", + "title": "Fart Song 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_song_6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Song.png", + "title": "Fart Song 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_song_7.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Song.png", + "title": "Fart Song 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_song_8.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Song.png", + "title": "Fart Song 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fart/fart_song_9.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fart Song.png", + "title": "Fart Song 12" + } + ] + }, + { + "categoryId": "62be51874d4edd56b588d54d", + "categoryName": "Hair Dryer", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Hair Dryer.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Hair Dryer/Hair_dryer_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Hair Dryer.png", + "title": "Hair Dryer 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Hair Dryer/Hair_dryer_10.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Hair Dryer.png", + "title": "Hair Dryer 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Hair Dryer/Hair_dryer_2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Hair Dryer.png", + "title": "Hair Dryer 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Hair Dryer/Hair_dryer_3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Hair Dryer.png", + "title": "Hair Dryer 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Hair Dryer/Hair_dryer_4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Hair Dryer.png", + "title": "Hair Dryer 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Hair Dryer/Hair_dryer_5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Hair Dryer.png", + "title": "Hair Dryer 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Hair Dryer/Hair_dryer_6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Hair Dryer.png", + "title": "Hair Dryer 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Hair Dryer/Hair_dryer_7.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Hair Dryer.png", + "title": "Hair Dryer 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Hair Dryer/Hair_dryer_8.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Hair Dryer.png", + "title": "Hair Dryer 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Hair Dryer/Hair_dryer_9.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Hair Dryer.png", + "title": "Hair Dryer 10" + } + ] + }, + { + "categoryId": "62be51cc4d4edd56b588d54e", + "categoryName": "Scissors", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Scissors.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Scissor/Scissors_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Scissors.png", + "title": "Scissors 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Scissor/Scissors_10.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Scissors.png", + "title": "Scissors 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Scissor/Scissors_2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Scissors.png", + "title": "Scissors 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Scissor/Scissors_3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Scissors.png", + "title": "Scissors 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Scissor/Scissors_4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Scissors.png", + "title": "Scissors 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Scissor/Scissors_5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Scissors.png", + "title": "Scissors 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Scissor/Scissors_6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Scissors.png", + "title": "Scissors 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Scissor/Scissors_7.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Scissors.png", + "title": "Scissors 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Scissor/Scissors_8.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Scissors.png", + "title": "Scissors 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Scissor/Scissors_9.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Scissors.png", + "title": "Scissors 10" + } + ] + }, + { + "categoryId": "62be51f84d4edd56b588d54f", + "categoryName": "Stun Gun", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Stun Gun.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Stun gun/Stun_gun_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Stun Gun.png", + "title": "Stun Gun 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Stun gun/Stun_gun_10.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Stun Gun.png", + "title": "Stun Gun 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Stun gun/Stun_gun_2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Stun Gun.png", + "title": "Stun Gun 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Stun gun/Stun_gun_3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Stun Gun.png", + "title": "Stun Gun 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Stun gun/Stun_gun_4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Stun Gun.png", + "title": "Stun Gun 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Stun gun/Stun_gun_5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Stun Gun.png", + "title": "Stun Gun 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Stun gun/Stun_gun_6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Stun Gun.png", + "title": "Stun Gun 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Stun gun/Stun_gun_7.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Stun Gun.png", + "title": "Stun Gun 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Stun gun/Stun_gun_8.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Stun Gun.png", + "title": "Stun Gun 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Stun gun/Stun_gun_9.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Stun Gun.png", + "title": "Stun Gun 10" + } + ] + }, + { + "categoryId": "636b8e5415831ec42fc7d802", + "categoryName": "Animal Sound", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Animal Sound.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Animal Sound/Bear.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Animal Sound/Beer.png", + "title": "Animal Sound 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Animal Sound/Bee.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Animal Sound/Bee.png", + "title": "Animal Sound 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Animal Sound/Buffalo 2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Animal Sound/Buffalo.png", + "title": "Animal Sound 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Animal Sound/Cat 1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Animal Sound/Cat.png", + "title": "Animal Sound 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Animal Sound/Crocodile 2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Animal Sound/Crocodile.png", + "title": "Animal Sound 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Animal Sound/Dog.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Animal Sound/Dog.png", + "title": "Animal Sound 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Animal Sound/Hippo 2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Animal Sound/Hippo.png", + "title": "Animal Sound 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Animal Sound/Horse.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Animal Sound/Horse.png", + "title": "Animal Sound 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Animal Sound/Lion.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Animal Sound/Lion.png", + "title": "Animal Sound 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Animal Sound/Monkey 1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Animal Sound/Monkey.png", + "title": "Animal Sound 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Animal Sound/Parrot.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Animal Sound/Parrot.png", + "title": "Animal Sound 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Animal Sound/Pig.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Animal Sound/Pig.png", + "title": "Animal Sound 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Animal Sound/Retired 1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Animal Sound/Retired.png", + "title": "Animal Sound 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Animal Sound/Snake.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Animal Sound/Snake.png", + "title": "Animal Sound 14" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Animal Sound/Squirrel.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Animal Sound/Squirrel.png", + "title": "Animal Sound 15" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Animal Sound/Tiger.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Animal Sound/Tiger.png", + "title": "Animal Sound 16" + } + ] + }, + { + "categoryId": "636b8e5415831ec42fc7d803", + "categoryName": "Business \u0026 Office", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Business \u0026 Office.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Business \u0026 Office/Air Conditioning.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Business \u0026 Office/air conditioning.png", + "title": "Business \u0026 Office 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Business \u0026 Office/Clock.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Business \u0026 Office/Clock.png", + "title": "Business \u0026 Office 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Business \u0026 Office/Elevator Bell.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Business \u0026 Office/elevator.png", + "title": "Business \u0026 Office 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Business \u0026 Office/Fax Machine.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Business \u0026 Office/Fax machine.png", + "title": "Business \u0026 Office 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Business \u0026 Office/Fire Bell.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Business \u0026 Office/fire bell.png", + "title": "Business \u0026 Office 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Business \u0026 Office/Fire Extinguisher.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Business \u0026 Office/fire extinguisher.png", + "title": "Business \u0026 Office 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Business \u0026 Office/keyboard 2.wav", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Business \u0026 Office/keyboard.png", + "title": "Business \u0026 Office 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Business \u0026 Office/Loudspeaker.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Business \u0026 Office/loudspeaker.png", + "title": "Business \u0026 Office 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Business \u0026 Office/Mouse.wav", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Business \u0026 Office/Mouse.png", + "title": "Business \u0026 Office 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Business \u0026 Office/Paper.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Business \u0026 Office/Paper.png", + "title": "Business \u0026 Office 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Business \u0026 Office/Pen.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Business \u0026 Office/Pen.png", + "title": "Business \u0026 Office 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Business \u0026 Office/Printer.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Business \u0026 Office/printer.png", + "title": "Business \u0026 Office 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Business \u0026 Office/Projector Film.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Business \u0026 Office/projector.png", + "title": "Business \u0026 Office 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Business \u0026 Office/Scissors.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Business \u0026 Office/scissors.png", + "title": "Business \u0026 Office 14" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Business \u0026 Office/Stapler.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Business \u0026 Office/stapler.png", + "title": "Business \u0026 Office 15" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Business \u0026 Office/Wired Phone.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Business \u0026 Office/wired phone.png", + "title": "Business \u0026 Office 16" + } + ] + }, + { + "categoryId": "636b8e5415831ec42fc7d804", + "categoryName": "Doors", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Doors.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Doors/Bankdoor.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Doors/Bankdoor.png", + "title": "Doors 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Doors/Car door.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Doors/Car door.png", + "title": "Doors 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Doors/Door Wrought Iron Window House.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Doors/Door Wrought Iron Window House.png", + "title": "Doors 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Doors/Garage door 1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Doors/garage door 1.png", + "title": "Doors 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Doors/Garage door 2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Doors/garage door 2.png", + "title": "Doors 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Doors/Glass Door.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Doors/Glass door.png", + "title": "Doors 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Doors/Hatch door.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Doors/hatch door.png", + "title": "Doors 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Doors/Hollow metal door.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Doors/Hollow metal door.png", + "title": "Doors 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Doors/Metal Door.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Doors/Metal door.png", + "title": "Doors 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Doors/Prison door.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Doors/prison door.png", + "title": "Doors 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Doors/Submarine door.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Doors/submarine door.png", + "title": "Doors 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Doors/Warehouse door.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Doors/warehouse door.png", + "title": "Doors 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Doors/Window wood.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Doors/Window wood.png", + "title": "Doors 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Doors/Window.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Doors/Window.png", + "title": "Doors 14" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Doors/Wood door 1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Doors/Wood door 1.png", + "title": "Doors 15" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Doors/Wood door 2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Doors/Wood door 2.png", + "title": "Doors 16" + } + ] + }, + { + "categoryId": "636b8e5415831ec42fc7d80a", + "categoryName": "Tools", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Tools.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Tools/Axe.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Tools/Axe.png", + "title": "Tools 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Tools/Demolition Hammer.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Tools/Demolition Hammer.png", + "title": "Tools 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Tools/Drill.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Tools/Drill.png", + "title": "Tools 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Tools/Fire sprinkle.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Tools/Fire sprinkle.png", + "title": "Tools 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Tools/Hammer.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Tools/Hamme.png", + "title": "Tools 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Tools/Hand drill.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Tools/Hand drill.png", + "title": "Tools 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Tools/Nailing Machine.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Tools/nailing machine.png", + "title": "Tools 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Tools/Pipe Wrench.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Tools/Pipe Wrench.png", + "title": "Tools 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Tools/Saw Machine.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Tools/Saw machine.png", + "title": "Tools 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Tools/Saw.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Tools/Saw.png", + "title": "Tools 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Tools/Smooth Polishing Machine.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Tools/smooth polishing machine.png", + "title": "Tools 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Tools/Tape Measure.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Tools/tape measure.png", + "title": "Tools 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Tools/Water Pump.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Tools/water pump.png", + "title": "Tools 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Tools/Welder Machine.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Tools/welder machine.png", + "title": "Tools 14" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Tools/Wrench.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Tools/wrench.png", + "title": "Tools 15" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd33", + "categoryName": "Blowing Nose", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Blowing nose.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Blowing nose/Blowing nose01.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Blowing nose/Blowing nose01.png", + "title": "Blowing Nose 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Blowing nose/Blowing nose02.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Blowing nose/Blowing nose02.png", + "title": "Blowing Nose 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Blowing nose/Blowing nose03.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Blowing nose/Blowing nose03.png", + "title": "Blowing Nose 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Blowing nose/Blowing nose04.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Blowing nose/Blowing nose04.png", + "title": "Blowing Nose 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Blowing nose/Blowing nose05.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Blowing nose/Blowing nose05.png", + "title": "Blowing Nose 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Blowing nose/Blowing nose06.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Blowing nose/Blowing nose06.png", + "title": "Blowing Nose 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Blowing nose/Blowing nose07.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Blowing nose/Blowing nose07.png", + "title": "Blowing Nose 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Blowing nose/Blowing nose08.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Blowing nose/Blowing nose08.png", + "title": "Blowing Nose 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Blowing nose/Blowing nose09.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Blowing nose/Blowing nose09.png", + "title": "Blowing Nose 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Blowing nose/Blowing nose10.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Blowing nose/Blowing nose10.png", + "title": "Blowing Nose 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Blowing nose/Blowing nose11.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Blowing nose/Blowing nose11.png", + "title": "Blowing Nose 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Blowing nose/Blowing nose12.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Blowing nose/Blowing nose12.png", + "title": "Blowing Nose 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Blowing nose/Blowing nose13.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Blowing nose/Blowing nose13.png", + "title": "Blowing Nose 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Blowing nose/Blowing nose14.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Blowing nose/Blowing nose14.png", + "title": "Blowing Nose 14" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd34", + "categoryName": "Boom", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Boom.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Boom/atom bomb.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Boom/atom bomb.png", + "title": "Boom 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Boom/Bomb.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Boom/Bomb.png", + "title": "Boom 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Boom/Cannon Car.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Boom/Cannon Car.png", + "title": "Boom 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Boom/Fire In The Hole.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Boom/Fire In The Hole.png", + "title": "Boom 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Boom/Firework.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Boom/Firework.png", + "title": "Boom 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Boom/Flashbang.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Boom/Flashbang.png", + "title": "Boom 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Boom/Grenade.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Boom/Grenade.png", + "title": "Boom 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Boom/Molotov.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Boom/Molotov.png", + "title": "Boom 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Boom/Rocket gun.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Boom/Rocket gun.png", + "title": "Boom 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Boom/shooting tank.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Boom/shooting tank.png", + "title": "Boom 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Boom/Smoke Grenade.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Boom/Smoke Grenade.png", + "title": "Boom 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Boom/stink bomb.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Boom/stink bomb.png", + "title": "Boom 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Boom/Throwing flash.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Boom/Throwing flash.png", + "title": "Boom 14" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Boom/Throwing smoke.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Boom/Throwing smoke.png", + "title": "Boom 15" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Boom/Time Bomb.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Boom/Time Bomb.png", + "title": "Boom 16" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd35", + "categoryName": "Clocking", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Clocking.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Clocking/Clocking01.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Clocking/Clocking01.png", + "title": "Clocking 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Clocking/Clocking02.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Clocking/Clocking02.png", + "title": "Clocking 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Clocking/Clocking03.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Clocking/Clocking03.png", + "title": "Clocking 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Clocking/Clocking04.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Clocking/Clocking04.png", + "title": "Clocking 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Clocking/Clocking05.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Clocking/Clocking05.png", + "title": "Clocking 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Clocking/Clocking06.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Clocking/Clocking06.png", + "title": "Clocking 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Clocking/Clocking07.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Clocking/Clocking07.png", + "title": "Clocking 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Clocking/Clocking08.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Clocking/Clocking08.png", + "title": "Clocking 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Clocking/Clocking09.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Clocking/Clocking09.png", + "title": "Clocking 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Clocking/Clocking10.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Clocking/Clocking10.png", + "title": "Clocking 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Clocking/Clocking11.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Clocking/Clocking11.png", + "title": "Clocking 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Clocking/Clocking12.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Clocking/Clocking12.png", + "title": "Clocking 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Clocking/Clocking13.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Clocking/Clocking13.png", + "title": "Clocking 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Clocking/Clocking14.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Clocking/Clocking14.png", + "title": "Clocking 14" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd36", + "categoryName": "Fun Anime", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Fun Anime.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fun Anime/Air.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fun Anime/Air.png", + "title": "Fun Anime 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fun Anime/Arigatou.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fun Anime/Arigatou.png", + "title": "Fun Anime 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fun Anime/Cook.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fun Anime/Cook.png", + "title": "Fun Anime 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fun Anime/Eh- Eh- Eh.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fun Anime/Eh- Eh- Eh.png", + "title": "Fun Anime 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fun Anime/Fire.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fun Anime/Fire.png", + "title": "Fun Anime 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fun Anime/Goku saiyan scream.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fun Anime/Goku saiyan scream.png", + "title": "Fun Anime 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fun Anime/Haki.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fun Anime/Haki.png", + "title": "Fun Anime 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fun Anime/Muda muda muda.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fun Anime/Muda muda muda.png", + "title": "Fun Anime 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fun Anime/Nani.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fun Anime/Nani.png", + "title": "Fun Anime 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fun Anime/Ora Ora Ora.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fun Anime/Ora Ora Ora.png", + "title": "Fun Anime 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fun Anime/stone.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fun Anime/stone.png", + "title": "Fun Anime 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fun Anime/Stop time.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fun Anime/Stop time.png", + "title": "Fun Anime 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fun Anime/Thunder.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fun Anime/Thunder.png", + "title": "Fun Anime 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fun Anime/Water.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fun Anime/Water.png", + "title": "Fun Anime 14" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Fun Anime/Wow.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Fun Anime/Wow.png", + "title": "Fun Anime 15" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd37", + "categoryName": "Gurgting", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Gurgling.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Gurgting/baby boy washing mouth.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Gurgting/baby boy washing mouth.png", + "title": "Gurgting 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Gurgting/baby girl washing mouth.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Gurgting/baby girl washing mouth.png", + "title": "Gurgting 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Gurgting/boy washing mouth.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Gurgting/boy washing mouth.png", + "title": "Gurgting 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Gurgting/drink water.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Gurgting/drink water.png", + "title": "Gurgting 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Gurgting/expectorate.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Gurgting/expectorate.png", + "title": "Gurgting 6" + }, + + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Gurgting/soap bubbles.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Gurgting/soap bubbles.png", + "title": "Gurgting 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Gurgting/washing face.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Gurgting/washing face.png", + "title": "Gurgting 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Gurgting/Woman washing mouth.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Gurgting/Woman washing mouth.png", + "title": "Gurgting 12" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd38", + "categoryName": "Snoring", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Snoring.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snoring/Snoring01.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snoring/Snoring01.png", + "title": "Snoring 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snoring/Snoring02.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snoring/Snoring02.png", + "title": "Snoring 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snoring/Snoring03.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snoring/Snoring03.png", + "title": "Snoring 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snoring/Snoring04.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snoring/Snoring04.png", + "title": "Snoring 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snoring/Snoring05.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snoring/Snoring05.png", + "title": "Snoring 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snoring/Snoring06.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snoring/Snoring06.png", + "title": "Snoring 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snoring/Snoring07.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snoring/Snoring07.png", + "title": "Snoring 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snoring/Snoring08.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snoring/Snoring08.png", + "title": "Snoring 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snoring/Snoring09.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snoring/Snoring09.png", + "title": "Snoring 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snoring/Snoring10.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snoring/Snoring10.png", + "title": "Snoring 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snoring/Snoring11.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snoring/Snoring11.png", + "title": "Snoring 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snoring/Snoring12.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snoring/Snoring12.png", + "title": "Snoring 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snoring/Snoring13.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snoring/Snoring13.png", + "title": "Snoring 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snoring/Snoring14.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snoring/Snoring14.png", + "title": "Snoring 14" + } + ] + }, + { + "categoryId": "636b8e5415831ec42fc7d805", + "categoryName": "Meme sound 1", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Meme sound 1.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 1/Ain_t Nobody Got Time.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 1/Ain_t Nobody Got Time.jpg", + "title": "Meme sound 1 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 1/Alert.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 1/Alert.jpg", + "title": "Meme sound 1 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 1/Applause.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 1/Applause.jpg", + "title": "Meme sound 1 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 1/Astronomia.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 1/Astronomia.jpg", + "title": "Meme sound 1 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 1/ba ba boi.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 1/ba ba boi.jpg", + "title": "Meme sound 1 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 1/Ba Dum Tss.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 1/Ba Dum Tss.jpg", + "title": "Meme sound 1 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 1/Ba Dun Dun.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 1/Ba Dun Dun.jpg", + "title": "Meme sound 1 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 1/Bass Boosted.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 1/Bass Boosted.jpg", + "title": "Meme sound 1 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 1/BIBLETHUMP (sad violin).mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 1/BIBLETHUMP (sad violin).jpg", + "title": "Meme sound 1 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 1/Crazy Kid Get Noscoped.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 1/Crazy Kid Get Noscoped.jpg", + "title": "Meme sound 1 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 1/Crickets Silence.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 1/Crickets Silence.jpg", + "title": "Meme sound 1 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 1/Damaged coda.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 1/Damaged coda.jpg", + "title": "Meme sound 1 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 1/Damn Daniel.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 1/Damn Daniel.jpg", + "title": "Meme sound 1 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 1/Damn.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 1/Damn.jpg", + "title": "Meme sound 1 14" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 1/Dancing polish Cow.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 1/Dancing polish cow.jpg", + "title": "Meme sound 1 15" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 1/Deez Nuts.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 1/Deez Nuts.jpg", + "title": "Meme sound 1 16" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 1/Dial Up Internet.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 1/Dial Up Internet.jpg", + "title": "Meme sound 1 17" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 1/Dip Dip Potato Chip.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 1/Dip Dip Potato Chip.jpg", + "title": "Meme sound 1 18" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 1/Dont Click.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 1/Dont click.jpg", + "title": "Meme sound 1 19" + } + ] + }, + { + "categoryId": "636b8e5415831ec42fc7d806", + "categoryName": "Meme sound 2", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Meme sound 2.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 2/DOOR STUCK! DOOR STUCK!.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 2/DOOR STUCK! DOOR STUCK!.jpg", + "title": "Meme sound 2 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 2/Driected by Robert B.Weide.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 2/Driected by Robert B.Weide.jpg", + "title": "Meme sound 2 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 2/E Girl You heard me.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 2/E Girl You heard me.jpg", + "title": "Meme sound 2 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 2/Epic Victory.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 2/Epic Victory.jpg", + "title": "Meme sound 2 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 2/EZ - Easy.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 2/EZ - Easy.jpg", + "title": "Meme sound 2 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 2/Falcon Punch.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 2/Falcon Punch.jpg", + "title": "Meme sound 2 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 2/Falling Whistle.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 2/Falling Whistle.jpg", + "title": "Meme sound 2 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 2/FBI! Open up!.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 2/FBI! Open up!.jpg", + "title": "Meme sound 2 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 2/flightreacts 50 laughs.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 2/flightreacts 50 laughs.jpg", + "title": "Meme sound 2 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 2/Funny Burp.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 2/Funny Burp.jpg", + "title": "Meme sound 2 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 2/Funny Cartoon Running.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 2/Funny Cartoon Running.jpg", + "title": "Meme sound 2 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 2/Funny Fart.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 2/Funny Fart.jpg", + "title": "Meme sound 2 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 2/Funny Laughs.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 2/Funny Laughs.jpg", + "title": "Meme sound 2 14" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 2/Funny Troll Guns.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 2/Funny Troll Guns.jpg", + "title": "Meme sound 2 15" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 2/Google.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 2/Google.jpg", + "title": "Meme sound 2 16" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 2/Hey It_s Corona Time.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 2/Hey It_s Corona Time.jpg", + "title": "Meme sound 2 17" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 2/Hey What Happen.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 2/Hey What Happen.jpg", + "title": "Meme sound 2 18" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 2/Hey, that_s pretty good!.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 2/Hey, that_s pretty good!.jpg", + "title": "Meme sound 2 19" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 2/His Name Is JOHN CENA.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 2/His Name Is JOHN CENA.jpg", + "title": "Meme sound 2 20" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 2/Holy Moly.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 2/Holy Moly.jpg", + "title": "Meme sound 2 21" + } + ] + }, + { + "categoryId": "636b8e5415831ec42fc7d807", + "categoryName": "Meme sound 3", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Meme sound 3.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 3/I Believe I Can OOF.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 3/I Believe I Can OOF.jpg", + "title": "Meme sound 3 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 3/Illuminati Confirmed.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 3/Illuminati Confirmed.jpg", + "title": "Meme sound 3 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 3/It_s Just a Prank.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 3/It_s Just a Prank.jpg", + "title": "Meme sound 3 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 3/It_s Me Mario.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 3/It_s Me Mario.jpg", + "title": "Meme sound 3 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 3/It_s Over 9000.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 3/It_s Over 9000.jpg", + "title": "Meme sound 3 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 3/KO - Street Fighter.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 3/KO - Street Fighter.jpg", + "title": "Meme sound 3 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 3/Kung Fu Shout.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 3/Kung Fu Shout.jpg", + "title": "Meme sound 3 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 3/Laughing Crowd.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 3/Laughing Crowd.jpg", + "title": "Meme sound 3 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 3/Lol.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 3/Lol.jpg", + "title": "Meme sound 3 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 3/Lonely Wind.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 3/Lonely Wind.jpg", + "title": "Meme sound 3 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 3/Mario Kart Race Start.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 3/Mario Kart Race Start.jpg", + "title": "Meme sound 3 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 3/Meme Triggered.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 3/Meme Triggered.jpg", + "title": "Meme sound 3 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 3/Minecraft Drinking.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 3/Minecraft Drinking.jpg", + "title": "Meme sound 3 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 3/Minecraft Pickaxe.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 3/Minecraft Pickaxe.jpg", + "title": "Meme sound 3 14" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 3/Mission Failed.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 3/Mission Failed.jpg", + "title": "Meme sound 3 15" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 3/Nani Omae wa mou shindeiru.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 3/Nani Omae wa mou shindeiru.jpg", + "title": "Meme sound 3 16" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 3/Noo!.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 3/Noo!.jpg", + "title": "Meme sound 3 17" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 3/Oh My God.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 3/Oh My God.jpg", + "title": "Meme sound 3 18" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 3/Oh No No No.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 3/Oh No No No.jpg", + "title": "Meme sound 3 19" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 3/Oh no tik tok.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 3/Oh no tik tok.jpg", + "title": "Meme sound 3 20" + } + ] + }, + { + "categoryId": "636b8e5415831ec42fc7d808", + "categoryName": "Meme sound 4", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Meme sound 4.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 4/OHHHH.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 4/OHHHH.jpg", + "title": "Meme sound 4 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 4/Ok.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 4/Ok.jpg", + "title": "Meme sound 4 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 4/Old Movie Projector.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 4/Old Movie Projector.jpg", + "title": "Meme sound 4 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 4/Onii-Chan Padoru.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 4/Onii-Chan Padoru.jpg", + "title": "Meme sound 4 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 4/OOF Roblox.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 4/OOF Roblox.jpg", + "title": "Meme sound 4 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 4/Oof!.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 4/Oof!.jpg", + "title": "Meme sound 4 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 4/Peppa pig YEET.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 4/Peppa pig YEET.jpg", + "title": "Meme sound 4 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 4/PewDiePie Hmm.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 4/PewDiePie Hmm.jpg", + "title": "Meme sound 4 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 4/Pewdiepie WOW.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 4/Pewdiepie WOW.jpg", + "title": "Meme sound 4 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 4/Phone Vibrating.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 4/Phone Vibrating.jpg", + "title": "Meme sound 4 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 4/Punch.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 4/Punch.jpg", + "title": "Meme sound 4 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 4/RKO Outta Nowhere.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 4/RKO Outta Nowhere.jpg", + "title": "Meme sound 4 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 4/Say What.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 4/Say What.jpg", + "title": "Meme sound 4 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 4/Sike That_s The Wrong Number.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 4/Sike That_s The Wrong Number.jpg", + "title": "Meme sound 4 14" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 4/Slap.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 4/Slap.jpg", + "title": "Meme sound 4 15" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 4/Sniper Shot - MW2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 4/Sniper Shot - MW2.jpg", + "title": "Meme sound 4 16" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 4/Sorry Bro.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 4/Sorry Bro.jpg", + "title": "Meme sound 4 17" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 4/Stop Fuking Lying.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 4/Stop Fuking Lying.jpg", + "title": "Meme sound 4 18" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 4/Suspense.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 4/Suspense.jpg", + "title": "Meme sound 4 19" + } + ] + }, + { + "categoryId": "636b8e5415831ec42fc7d809", + "categoryName": "Meme sound 5", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Meme sound 5.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 5/Tadaa Vanoss Gaming.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 5/Tadaa Vanoss Gaming.jpg", + "title": "Meme sound 5 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 5/Take The L.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 5/Take The L.jpg", + "title": "Meme sound 5 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 5/That Was Legitness.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 5/That Was Legitness.jpg", + "title": "Meme sound 5 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 5/The Duck Song.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 5/The Duck Song.jpg", + "title": "Meme sound 5 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 5/Titanic Flute Fail.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 5/Titanic Flute Fail.jpg", + "title": "Meme sound 5 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 5/Troll Bell.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 5/Troll Bell.jpg", + "title": "Meme sound 5 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 5/Troll Kids.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 5/Troll Kids.jpg", + "title": "Meme sound 5 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 5/Two Hours Later.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 5/Two Hours Later.jpg", + "title": "Meme sound 5 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 5/Where The Fuk I Am.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 5/Where The Fuk I Am.jpg", + "title": "Meme sound 5 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 5/Wii Theme.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 5/Wii Theme.jpg", + "title": "Meme sound 5 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 5/Windows Earrape.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 5/Windows Earrape.jpg", + "title": "Meme sound 5 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 5/Windows Error.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 5/Windows Error.jpg", + "title": "Meme sound 5 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 5/WTF Boom.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 5/WTF Boom.jpg", + "title": "Meme sound 5 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 5/WTF.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 5/WTF.jpg", + "title": "Meme sound 5 14" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 5/WWE Crazy OMG Moments.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 5/WWE Crazy OMG Moments.jpg", + "title": "Meme sound 5 15" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 5/YEEET.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 5/YEEET.jpg", + "title": "Meme sound 5 16" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 5/Yes.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 5/Yes.jpg", + "title": "Meme sound 5 17" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 5/You_re the last one. Complete the mission.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 5/You_re the last one. Complete the mission.jpg", + "title": "Meme sound 5 18" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 5/Yup.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 5/Yup.jpg", + "title": "Meme sound 5 19" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 5/Zombie Death.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 5/Zombie Death.jpg", + "title": "Meme sound 5 20" + } + ] + }, + { + "categoryId": "636dc88cf512f266a311768d", + "categoryName": "Meme sound 6", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Meme sound 6.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/2000 Years Later.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/2000 Years Later.jpg", + "title": "Meme sound 6 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/ANOTHER ONE.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/ANOTHER ONE.jpg", + "title": "Meme sound 6 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/Angry Gamer.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/Angry Gamer.jpg", + "title": "Meme sound 6 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/Are You Stupid.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/Are You Stupid.jpg", + "title": "Meme sound 6 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/Autism Attack.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/Autism Attack.jpg", + "title": "Meme sound 6 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/Crowd clapping.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/Crowd clapping.jpg", + "title": "Meme sound 6 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/Crying.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/Crying.jpg", + "title": "Meme sound 6 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/DAMN.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/DAMN.jpg", + "title": "Meme sound 6 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/Do it! Just Do It!.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/Do it! Just Do It!.jpg", + "title": "Meme sound 6 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/Epic black man crying.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/Epic black man crying.jpg", + "title": "Meme sound 6 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/GTA Mission Passed.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/GTA Mission Passed.jpg", + "title": "Meme sound 6 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/Hi Okay.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/Hi Okay.jpg", + "title": "Meme sound 6 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/I Don_t Know.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/I Don_t Know.jpg", + "title": "Meme sound 6 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/I feel good.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/I feel good.jpg", + "title": "Meme sound 6 14" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/Jonah laughing.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/Jonah laughing.jpg", + "title": "Meme sound 6 15" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/Lion Laughing.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/Lion Laughing.jpg", + "title": "Meme sound 6 16" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/MONKEY LAUGHING.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/MONKEY LAUGHING.jpg", + "title": "Meme sound 6 17" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/NO GOD! NO GOD, PLEASE NO.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/NO GOD! NO GOD, PLEASE NO.jpg", + "title": "Meme sound 6 18" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/Nani Omae wa mou shindeiru.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/Nani Omae wa mou shindeiru.jpg", + "title": "Meme sound 6 19" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/Nice.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/Nice.jpg", + "title": "Meme sound 6 20" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/Nicolas Cage laughing.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/Nicolas Cage laughing.jpg", + "title": "Meme sound 6 21" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/Oh Hell No.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/Oh Hell No.jpg", + "title": "Meme sound 6 22" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/Radiotv Censor.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/Radiotv Censor.jpg", + "title": "Meme sound 6 23" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/Really Nigga.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/Really Nigga.jpg", + "title": "Meme sound 6 24" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/SERIOUSLY WTF.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/SERIOUSLY WTF.jpg", + "title": "Meme sound 6 25" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/Silent laugh.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/Silent laugh.jpg", + "title": "Meme sound 6 26" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/Smoke Weed every Day.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/Smoke Weed every Day.jpg", + "title": "Meme sound 6 27" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/Squirrel Shout.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/Squirrel Shout.jpg", + "title": "Meme sound 6 28" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/Stop It, Get Some Help.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/Stop It, Get Some Help.jpg", + "title": "Meme sound 6 29" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/Surprise.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/Surprise.jpg", + "title": "Meme sound 6 30" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/WHAT.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/WHAT.jpg", + "title": "Meme sound 6 31" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/Wait A Minute, Who Are You.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/Wait A Minute, Who Are You.jpg", + "title": "Meme sound 6 32" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/What_s wrong with you.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/What_s wrong with you.jpg", + "title": "Meme sound 6 33" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Meme sound 6/oh my god wow.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Meme sound 6/oh my god wow.jpg", + "title": "Meme sound 6 34" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd47", + "categoryName": "Anime meme", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Anime Meme.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Anime meme/Ahoy.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Anime meme/Ahoy.png", + "title": "Anime meme 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Anime meme/Anta Baka.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Anime meme/Anta Baka.png", + "title": "Anime meme 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Anime meme/Ara Ara.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Anime meme/Ara Ara.png", + "title": "Anime meme 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Anime meme/Deadman Anime.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Anime meme/Deadman Anime.png", + "title": "Anime meme 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Anime meme/Ehe te nandayo.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Anime meme/Ehe te nandayo.png", + "title": "Anime meme 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Anime meme/Hayai.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Anime meme/Hayai.png", + "title": "Anime meme 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Anime meme/IIIIIIIHHHHHHHHHÁÁÁÁÁÁÁÁÁÁ!!!.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Anime meme/IIIIIIIHHHHHHHHHÁÁÁÁÁÁÁÁÁÁ!!!.png", + "title": "Anime meme 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Anime meme/Mario.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Anime meme/Mario.png", + "title": "Anime meme 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Anime meme/Nande.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Anime meme/Nande.png", + "title": "Anime meme 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Anime meme/Nani-Yasen.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Anime meme/Nani-Yasen.png", + "title": "Anime meme 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Anime meme/Nico Nico Nii.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Anime meme/Nico Nico Nii.png", + "title": "Anime meme 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Anime meme/Nyanpasu.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Anime meme/Nyanpasu.png", + "title": "Anime meme 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Anime meme/Onii chan.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Anime meme/Onii chan.png", + "title": "Anime meme 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Anime meme/Pikachu.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Anime meme/Pikachu.png", + "title": "Anime meme 14" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Anime meme/Rero rero.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Anime meme/Rero rero.png", + "title": "Anime meme 15" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Anime meme/Senpai.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Anime meme/Senpai.png", + "title": "Anime meme 16" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Anime meme/Tuturu_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Anime meme/Tuturu.png", + "title": "Anime meme 17" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Anime meme/Uwu Uwu.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Anime meme/Uwu Uwu.png", + "title": "Anime meme 18" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd48", + "categoryName": "Baby sound meme", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Baby sound meme.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Baby sound meme/Autotune Baby.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Baby sound meme/Autotune Baby.png", + "title": "Baby sound meme 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Baby sound meme/baby crying.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Baby sound meme/baby crying.png", + "title": "Baby sound meme 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Baby sound meme/Baby Groot.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Baby sound meme/Baby Groot.png", + "title": "Baby sound meme 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Baby sound meme/Baby Screaming Meme.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Baby sound meme/Baby Screaming Meme.png", + "title": "Baby sound meme 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Baby sound meme/Baby.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Baby sound meme/Baby.png", + "title": "Baby sound meme 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Baby sound meme/Cute Korean Baby.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Baby sound meme/Cute Korean Baby.png", + "title": "Baby sound meme 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Baby sound meme/Guten Morgen!.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Baby sound meme/Guten Morgen!.png", + "title": "Baby sound meme 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Baby sound meme/Hasta la Vista, baby. Shotgun..mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Baby sound meme/Hasta la Vista, baby. Shotgun..png", + "title": "Baby sound meme 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Baby sound meme/Hello Baby Girl.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Baby sound meme/Hello Baby Girl.png", + "title": "Baby sound meme 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Baby sound meme/KICK THE BABY.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Baby sound meme/KICK THE BABY.png", + "title": "Baby sound meme 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Baby sound meme/Mario Paint Baby.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Baby sound meme/Mario Paint Baby.png", + "title": "Baby sound meme 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Baby sound meme/Not The Momma!.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Baby sound meme/Not The Momma!.png", + "title": "Baby sound meme 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Baby sound meme/Oh Baby A Triple! Sound.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Baby sound meme/Oh Baby A Triple! Sound.png", + "title": "Baby sound meme 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Baby sound meme/The Baby Elephant from The Jungle Book.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Baby sound meme/The Baby Elephant from The Jungle Book.png", + "title": "Baby sound meme 14" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd49", + "categoryName": "Laughing meme", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Laughing meme.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Laughing meme/baby laughing meme.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Laughing meme/baby laughing meme.png", + "title": "Laughing meme 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Laughing meme/broteam laugh.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Laughing meme/broteam laugh.png", + "title": "Laughing meme 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Laughing meme/Flaky singing and Nutty laughing.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Laughing meme/Flaky singing and Nutty laughing _3.png", + "title": "Laughing meme 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Laughing meme/frog laughing meme.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Laughing meme/frog laughing meme.png", + "title": "Laughing meme 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Laughing meme/Haha funny laugh.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Laughing meme/Haha funny laugh.png", + "title": "Laughing meme 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Laughing meme/laughing chihuahua meme.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Laughing meme/laughing chihuahua meme.png", + "title": "Laughing meme 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Laughing meme/Ninja laughing meme.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Laughing meme/Ninja laughing meme.png", + "title": "Laughing meme 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Laughing meme/PewDiePie Laugh.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Laughing meme/PewDiePie Laugh.png", + "title": "Laughing meme 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Laughing meme/Silly Screaming Laughter.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Laughing meme/Silly Screaming Laughter.png", + "title": "Laughing meme 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Laughing meme/That one mischievous guy laughing.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Laughing meme/That one mischievous guy laughing.png", + "title": "Laughing meme 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Laughing meme/YAAAYY CHILDREN!!!!.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Laughing meme/YAAAYY CHILDREN!!!!.png", + "title": "Laughing meme 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Laughing meme/You_ve got a whole lot to learn!.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Laughing meme/You\u0027ve got a whole lot to learn!.png", + "title": "Laughing meme 12" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd50", + "categoryName": "Video effect", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Video effect.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Video Effect/AUGHHHHH.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Video Effect/AUGHHHHH.png", + "title": "Video effect 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Video Effect/Bing Chilling.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Video Effect/Bing Chilling.png", + "title": "Video effect 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Video Effect/Chuck Noris Yell.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Video Effect/Chuck Noris Yell.png", + "title": "Video effect 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Video Effect/Doge Bonk.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Video Effect/Doge Bonk.png", + "title": "Video effect 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Video Effect/Funny sound.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Video Effect/Funny sound.png", + "title": "Video effect 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Video Effect/Gotcha bitch.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Video Effect/Gotcha bitch.png", + "title": "Video effect 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Video Effect/Hello-Minion.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Video Effect/Hello-Minion.png", + "title": "Video effect 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Video Effect/Instagram Thud.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Video Effect/Instagram Thud.png", + "title": "Video effect 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Video Effect/Okay.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Video Effect/Okay.png", + "title": "Video effect 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Video Effect/Pew Pew.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Video Effect/Pew Pew.png", + "title": "Video effect 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Video Effect/Shocking.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Video Effect/Shocking.png", + "title": "Video effect 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Video Effect/Sudden Suspense.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Video Effect/Sudden Suspense.png", + "title": "Video effect 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Video Effect/This Is Bullshit.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Video Effect/This Is Bullshit.png", + "title": "Video effect 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Video Effect/What bottom text meme.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Video Effect/What bottom text meme.png", + "title": "Video effect 14" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Video Effect/Windows XP Error.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Video Effect/Windows XP Error.png", + "title": "Video effect 15" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Video Effect/WowJustin.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Video Effect/WowJustin.png", + "title": "Video effect 16" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Video Effect/WTFFFF.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Video Effect/WTFFFF.png", + "title": "Video effect 17" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Video Effect/Yeet.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Video Effect/Yeet.png", + "title": "Video effect 18" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd40", + "categoryName": "Church Bell", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Church Bell.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Church Bell/Church Bell 1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Church Bell/Church Bell 1.png", + "title": "Church Bell 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Church Bell/Church Bell 10.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Church Bell/Church Bell 10.png", + "title": "Church Bell 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Church Bell/Church Bell 11.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Church Bell/Church Bell 11.png", + "title": "Church Bell 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Church Bell/Church Bell 12.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Church Bell/Church Bell 12.png", + "title": "Church Bell 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Church Bell/Church Bell 13.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Church Bell/Church Bell 13.png", + "title": "Church Bell 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Church Bell/Church Bell 14.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Church Bell/Church Bell 14.png", + "title": "Church Bell 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Church Bell/Church Bell 2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Church Bell/Church Bell 2.png", + "title": "Church Bell 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Church Bell/Church Bell 3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Church Bell/Church Bell 3.png", + "title": "Church Bell 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Church Bell/Church Bell 4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Church Bell/Church Bell 4.png", + "title": "Church Bell 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Church Bell/Church Bell 5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Church Bell/Church Bell 5.png", + "title": "Church Bell 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Church Bell/Church Bell 6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Church Bell/Church Bell 6.png", + "title": "Church Bell 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Church Bell/Church Bell 7.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Church Bell/Church Bell 7.png", + "title": "Church Bell 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Church Bell/Church Bell 8.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Church Bell/Church Bell 8.png", + "title": "Church Bell 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Church Bell/Church Bell 9.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Church Bell/Church Bell 9.png", + "title": "Church Bell 14" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd44", + "categoryName": "Santa Claus", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Santa Claus.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Santa Claus/Santa Claus 1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Santa Claus/Santa Claus 1.png", + "title": "Santa Claus 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Santa Claus/Santa Claus 10.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Santa Claus/Santa Claus 10.png", + "title": "Santa Claus 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Santa Claus/Santa Claus 11.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Santa Claus/Santa Claus 11.png", + "title": "Santa Claus 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Santa Claus/Santa Claus 12.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Santa Claus/Santa Claus 12.png", + "title": "Santa Claus 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Santa Claus/Santa Claus 13.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Santa Claus/Santa Claus 13.png", + "title": "Santa Claus 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Santa Claus/Santa Claus 14.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Santa Claus/Santa Claus 14.png", + "title": "Santa Claus 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Santa Claus/Santa Claus 2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Santa Claus/Santa Claus 2.png", + "title": "Santa Claus 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Santa Claus/Santa Claus 3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Santa Claus/Santa Claus 3.png", + "title": "Santa Claus 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Santa Claus/Santa Claus 4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Santa Claus/Santa Claus 4.png", + "title": "Santa Claus 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Santa Claus/Santa Claus 5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Santa Claus/Santa Claus 5.png", + "title": "Santa Claus 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Santa Claus/Santa Claus 6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Santa Claus/Santa Claus 6.png", + "title": "Santa Claus 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Santa Claus/Santa Claus 7.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Santa Claus/Santa Claus 7.png", + "title": "Santa Claus 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Santa Claus/Santa Claus 8.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Santa Claus/Santa Claus 8.png", + "title": "Santa Claus 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Santa Claus/Santa Claus 9.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Santa Claus/Santa Claus 9.png", + "title": "Santa Claus 14" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd45", + "categoryName": "Sleigh bell", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Sleigh bell.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Sleigh bell/Sleigh bell 1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Sleigh bell/Sleigh bell 1.png", + "title": "Sleigh bell 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Sleigh bell/Sleigh bell 10.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Sleigh bell/Sleigh bell 10.png", + "title": "Sleigh bell 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Sleigh bell/Sleigh bell 11.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Sleigh bell/Sleigh bell 11.png", + "title": "Sleigh bell 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Sleigh bell/Sleigh bell 12.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Sleigh bell/Sleigh bell 12.png", + "title": "Sleigh bell 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Sleigh bell/Sleigh bell 2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Sleigh bell/Sleigh bell 2.png", + "title": "Sleigh bell 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Sleigh bell/Sleigh bell 3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Sleigh bell/Sleigh bell 3.png", + "title": "Sleigh bell 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Sleigh bell/Sleigh bell 4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Sleigh bell/Sleigh bell 4.png", + "title": "Sleigh bell 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Sleigh bell/Sleigh bell 5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Sleigh bell/Sleigh bell 5.png", + "title": "Sleigh bell 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Sleigh bell/Sleigh bell 6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Sleigh bell/Sleigh bell 6.png", + "title": "Sleigh bell 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Sleigh bell/Sleigh bell 7.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Sleigh bell/Sleigh bell 7.png", + "title": "Sleigh bell 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Sleigh bell/Sleigh bell 8.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Sleigh bell/Sleigh bell 8.png", + "title": "Sleigh bell 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Sleigh bell/Sleigh bell 9.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Sleigh bell/Sleigh bell 9.png", + "title": "Sleigh bell 12" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd46", + "categoryName": "Snowball", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Snowball.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snowball/Snowball 1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snowball/Snowball 1.png", + "title": "Snowball 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snowball/Snowball 10.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snowball/Snowball 10.png", + "title": "Snowball 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snowball/Snowball 2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snowball/Snowball 2.png", + "title": "Snowball 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snowball/Snowball 3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snowball/Snowball 3.png", + "title": "Snowball 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snowball/Snowball 4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snowball/Snowball 4.png", + "title": "Snowball 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snowball/Snowball 5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snowball/Snowball 5.png", + "title": "Snowball 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snowball/Snowball 6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snowball/Snowball 6.png", + "title": "Snowball 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snowball/Snowball 7.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snowball/Snowball 7.png", + "title": "Snowball 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snowball/Snowball 8.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snowball/Snowball 8.png", + "title": "Snowball 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Snowball/Snowball 9.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Snowball/Snowball 9.png", + "title": "Snowball 10" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd41", + "categoryName": "Countdown", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Countdown.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Countdown/Countdown01.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Countdown/Countdown01.png", + "title": "Countdown 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Countdown/Countdown02.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Countdown/Countdown02.png", + "title": "Countdown 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Countdown/Countdown03.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Countdown/Countdown03.png", + "title": "Countdown 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Countdown/Countdown04.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Countdown/Countdown04.png", + "title": "Countdown 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Countdown/Countdown05.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Countdown/Countdown05.png", + "title": "Countdown 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Countdown/Countdown06.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Countdown/Countdown06.png", + "title": "Countdown 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Countdown/Countdown07.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Countdown/Countdown07.png", + "title": "Countdown 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Countdown/Countdown08.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Countdown/Countdown08.png", + "title": "Countdown 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Countdown/Countdown09.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Countdown/Countdown09.png", + "title": "Countdown 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Countdown/Countdown10.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Countdown/Countdown10.png", + "title": "Countdown 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Countdown/Countdown11.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Countdown/Countdown11.png", + "title": "Countdown 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Countdown/Countdown12.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Countdown/Countdown12.png", + "title": "Countdown 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Countdown/Countdown13.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Countdown/Countdown13.png", + "title": "Countdown 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Countdown/Countdown14.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Countdown/Countdown14.png", + "title": "Countdown 14" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Countdown/Countdown15.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Countdown/Countdown15.png", + "title": "Countdown 15" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Countdown/Countdown16.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Countdown/Countdown16.png", + "title": "Countdown 16" + } + ] + }, + + { + "categoryId": "636dc40571a30811c821fd39", + "categoryName": "Champagne", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Champagne.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Champagne/Beer foam.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Champagne/Beer foam.png", + "title": "Champagne 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Champagne/Beer.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Champagne/Beer.png", + "title": "Champagne 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Champagne/Bottle shake.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Champagne/Bottle shake.png", + "title": "Champagne 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Champagne/Champagne01.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Champagne/Champagne01.png", + "title": "Champagne 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Champagne/Champagne02.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Champagne/Champagne02.png", + "title": "Champagne 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Champagne/Champagne03.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Champagne/Champagne03.png", + "title": "Champagne 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Champagne/Cheers.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Champagne/Cheers.png", + "title": "Champagne 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Champagne/Clap wine bottles.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Champagne/Clap wine bottles.png", + "title": "Champagne 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Champagne/Drinking alcohol.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Champagne/Drinking alcohol.png", + "title": "Champagne 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Champagne/Girl drink.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Champagne/Girl drink.png", + "title": "Champagne 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Champagne/Ice bucket.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Champagne/Ice bucket.png", + "title": "Champagne 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Champagne/Ice.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Champagne/Ice.png", + "title": "Champagne 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Champagne/Man drink.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Champagne/Man drink.png", + "title": "Champagne 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Champagne/Pour wine.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Champagne/Pour wine.png", + "title": "Champagne 14" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Champagne/Tongs.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Champagne/Tongs.png", + "title": "Champagne 15" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Champagne/Touch cup.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Champagne/Touch cup.png", + "title": "Champagne 16" + } + ] + }, + { + "categoryId": "64b617f06d7b94ebbe2a20fa", + "categoryName": "Siren Head", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/20230718/SIREN HEAD.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Alarm clock head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Alarm clock head.png", + "title": "Siren Head 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Bell Head Siren.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Bell Head Siren.png", + "title": "Siren Head 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Bellringer head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Bellringer head.png", + "title": "Siren Head 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Bulb head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Bulb head.png", + "title": "Siren Head 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Camera head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Camera head.png", + "title": "Siren Head 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Classic 10 head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Classic 10 head.png", + "title": "Siren Head 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Eye head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Eye head.png", + "title": "Siren Head 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Fire alarm head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Fire alarm head.png", + "title": "Siren Head 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Horn siren head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Horn siren head.png", + "title": "Siren Head 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Horror toilet head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Horror toilet head.png", + "title": "Siren Head 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Knife head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Knife head.png", + "title": "Siren Head 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Lamp head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Lamp head.png", + "title": "Siren Head 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Noodle head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Noodle head.png", + "title": "Siren Head 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Palette head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Palette head.png", + "title": "Siren Head 14" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Poo head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Poo head.png", + "title": "Siren Head 15" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Poop head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Poop head.png", + "title": "Siren Head 16" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Pumpkin head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Pumpkin head.png", + "title": "Siren Head 17" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Radio head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Radio head.png", + "title": "Siren Head 18" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Seashell head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Seashell head.png", + "title": "Siren Head 19" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Siren Head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Siren Head.png", + "title": "Siren Head 20" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Siren tongue.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Siren tongue.png", + "title": "Siren Head 21" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Skull Head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Skull Head.png", + "title": "Siren Head 22" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Snowman head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Snowman head.png", + "title": "Siren Head 23" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Teeth head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Teeth head.png", + "title": "Siren Head 24" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Thunderbolt head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Thunderbolt head.png", + "title": "Siren Head 25" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Toilet head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Toilet head.png", + "title": "Siren Head 26" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Toilet paper head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Toilet paper head.png", + "title": "Siren Head 27" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Tombstone head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Tombstone head.png", + "title": "Siren Head 28" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/Trafic light head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Trafic light head.png", + "title": "Siren Head 29" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/20230718/Siren Head/TV head.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/TV head.png", + "title": "Siren Head 30" + } + ] + }, + { + "categoryId": "625f83491fea07887e619066", + "categoryName": "Burp", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Burp.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Burp/funny_burp_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Burp.png", + "title": "Burp 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Burp/funny_burp_10.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Burp.png", + "title": "Burp 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Burp/funny_burp_11.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Burp.png", + "title": "Burp 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Burp/funny_burp_12.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Burp.png", + "title": "Burp 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Burp/funny_burp_2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Burp.png", + "title": "Burp 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Burp/funny_burp_3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Burp.png", + "title": "Burp 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Burp/funny_burp_4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Burp.png", + "title": "Burp 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Burp/funny_burp_5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Burp.png", + "title": "Burp 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Burp/funny_burp_6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Burp.png", + "title": "Burp 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Burp/funny_burp_7.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Burp.png", + "title": "Burp 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Burp/funny_burp_8.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Burp.png", + "title": "Burp 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Burp/funny_burp_9.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Burp.png", + "title": "Burp 12" + } + ] + }, + { + "categoryId": "625f83491fea07887e619067", + "categoryName": "Car", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Car.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Car/funny_carengine_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Car.png", + "title": "Car 1" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Car/funny_carengine_2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Car.png", + "title": "Car 2" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Car/funny_carengine_3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Car.png", + "title": "Car 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Car/funny_carengine_4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Car.png", + "title": "Car 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Car/funny_carengine_5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Car.png", + "title": "Car 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Car/funny_carengine_6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Car.png", + "title": "Car 6" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Car/funny_carhorn_1.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Car.png", + "title": "Car 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Car/funny_carhorn_2.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Car.png", + "title": "Car 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Car/funny_carhorn_3.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Car.png", + "title": "Car 9" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Car/funny_carhorn_4.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Car.png", + "title": "Car 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Car/funny_carhorn_5.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Car.png", + "title": "Car 11" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Car/funny_carhorn_6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Car.png", + "title": "Car 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Car/funny_carhorn_7.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Car.png", + "title": "Car 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Car/funny_carhorn_8.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Car.png", + "title": "Car 14" + } + ] + }, + { + "categoryId": "634e0d283a35295ff1e9d782", + "categoryName": "Halloween", + "categoryUrl": "https://prank-sound-abi.pranksound.com/icons/icon-categories/Halloween.png", + "list": [ + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Halloween/Creepy crime.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Halloween/Creepy crime.png", + "title": "Halloween 3" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Halloween/Creepydoor.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Halloween/Creepydoor.png", + "title": "Halloween 4" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Halloween/Evil laughing.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Halloween/Evil laughing.png", + "title": "Halloween 5" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Halloween/Halloween impact.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Halloween/Halloween impact.png", + "title": "Halloween 7" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Halloween/Halloween.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Halloween/Halloween.png", + "title": "Halloween 8" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Halloween/Jump scare.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Halloween/Jump scare.png", + "title": "Halloween 10" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Halloween/Little secrets.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Halloween/Little secrets.png", + "title": "Halloween 12" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Halloween/Murder of crows.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Halloween/Murder of crows.png", + "title": "Halloween 13" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Halloween/Pumpkin laughing.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Halloween/Pumpkin laughing.png", + "title": "Halloween 14" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Halloween/Scary night.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Halloween/Scary night.png", + "title": "Halloween 15" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Halloween/Spooky ambience.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Halloween/Spooky ambience.png", + "title": "Halloween 16" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Halloween/Spooky wind.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Halloween/Spooky wind.png", + "title": "Halloween 17" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Halloween/Strange lullaby.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Halloween/Strange lullaby.png", + "title": "Halloween 18" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Halloween/Witch.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Halloween/Witch.png", + "title": "Halloween 19" + }, + { + "mp3Url": "https://prank-sound-abi.pranksound.com/sounds/Halloween/You cant see me.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/Halloween/You cant see me.png", + "title": "Halloween 20" + } + ] + } +] \ No newline at end of file diff --git a/app/src/main/assets/prankfont.ttf b/app/src/main/assets/prankfont.ttf new file mode 100644 index 0000000..23e4502 Binary files /dev/null and b/app/src/main/assets/prankfont.ttf differ diff --git a/app/src/main/java/com/prank/app/color/App.java b/app/src/main/java/com/prank/app/color/App.java new file mode 100644 index 0000000..ea39c2e --- /dev/null +++ b/app/src/main/java/com/prank/app/color/App.java @@ -0,0 +1,48 @@ +package com.prank.app.color; + +import android.app.Application; +import android.content.res.AssetManager; +import android.graphics.Typeface; + +import com.prank.app.color.dbdata.MyData; +import com.prank.app.color.dbdata.MyInfo; + +import com.prank.app.color.dbdata.DbTool; +import com.prank.app.color.utils.Common; + +import java.io.IOException; +import java.io.InputStream; +import java.util.List; + +public class App extends Application { + + public static App app; + public static Typeface defaultFont; + public static List bean; + + @Override + public void onCreate() { + super.onCreate(); + app = this; + AssetManager assets = getAssets(); + defaultFont = Typeface.createFromAsset(assets, "prankfont.ttf"); + DbTool.init(this); + if (bean != null) + return; + try { + InputStream open = getAssets().open("prank.json"); + String string = Common.getString(open); + if (!string.isEmpty()) { + bean = Common.getBean(string); + for (MyData category:bean){ + for (MyInfo info1 : category.getInfoList()) { + info1.setLike(false); + DbTool.getBoxBean().put(info1); + } + } + } + } catch (IOException e) { + throw new RuntimeException(e); + } + } +} diff --git a/app/src/main/java/com/prank/app/color/activity/ActivityHome.java b/app/src/main/java/com/prank/app/color/activity/ActivityHome.java new file mode 100644 index 0000000..8bf0bc1 --- /dev/null +++ b/app/src/main/java/com/prank/app/color/activity/ActivityHome.java @@ -0,0 +1,57 @@ +package com.prank.app.color.activity; + + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.GridLayoutManager; + +import com.prank.app.color.App; +import com.prank.app.color.databinding.ActivityHomeBinding; +import com.prank.app.color.list.AdapterHome; +import com.prank.app.color.utils.Common; +import com.prank.app.color.utils.ItemDecoration; + +public class ActivityHome extends AppCompatActivity { + + private ActivityHomeBinding activityMainBinding; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + activityMainBinding = ActivityHomeBinding.inflate(getLayoutInflater()); + setContentView(activityMainBinding.getRoot()); + Common.setStatusBarTextColor(this, true); + + + ItemDecoration itemHelper = new ItemDecoration(10, 10, 0); + activityMainBinding.recyclerView.addItemDecoration(itemHelper); + activityMainBinding.recyclerView.setLayoutManager(new GridLayoutManager(this, 2)); + activityMainBinding.recyclerView.setAdapter(new AdapterHome(this, App.bean)); + initClick(); + + + + } + + private void initClick(){ + activityMainBinding.rlRecord.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(ActivityHome.this, ActivityImport.class); + startActivity(intent); + } + }); + activityMainBinding.rlLike.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(ActivityHome.this, ActivityLike.class); + startActivity(intent); + } + }); + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/prank/app/color/activity/ActivityImport.kt b/app/src/main/java/com/prank/app/color/activity/ActivityImport.kt new file mode 100644 index 0000000..bf56d84 --- /dev/null +++ b/app/src/main/java/com/prank/app/color/activity/ActivityImport.kt @@ -0,0 +1,174 @@ +package com.prank.app.color.activity + +import android.Manifest +import android.content.Intent +import android.content.pm.PackageManager +import android.net.Uri +import android.os.Build +import android.os.Bundle +import android.view.View +import android.widget.Toast +import androidx.activity.result.ActivityResultLauncher +import androidx.activity.result.contract.ActivityResultContracts +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.prank.app.color.R +import com.prank.app.color.dbdata.DbTool +import com.prank.app.color.databinding.ActivityImportBinding +import com.prank.app.color.list.AdapterLike +import com.prank.app.color.utils.Common +import com.prank.app.color.utils.ItemDecoration + +class ActivityImport : AppCompatActivity(), View.OnClickListener { + private lateinit var binding: ActivityImportBinding + + private var adapter: AdapterLike? = null + private var requestRecordAudioLauncher: ActivityResultLauncher? = null + private var audioPickerLauncher: ActivityResultLauncher? = null + private var requestStorePermissionsLauncher: ActivityResultLauncher>? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityImportBinding.inflate(layoutInflater) + setContentView(binding.root) + Common.setStatusBarTextColor(this, true) + + + requestRecordAudioLauncher = registerForActivityResult( + ActivityResultContracts.RequestPermission() + ) { isGranted: Boolean -> + if (isGranted) { + intentRecordAudio() + } else { + Toast.makeText( + this, + "Recording permission denied", + Toast.LENGTH_SHORT + ).show() + } + } + requestStorePermissionsLauncher = registerForActivityResult( + ActivityResultContracts.RequestMultiplePermissions() + ) { result: Map -> + val isGranted = result.all { it.value } + + if (isGranted) { + importAudio() + } else { + Toast.makeText(this, getString(R.string.permission_fail), Toast.LENGTH_SHORT).show() + } + } + audioPickerLauncher = registerForActivityResult( + ActivityResultContracts.GetContent() + ) { uri: Uri? -> + // Handle the returned Uri + uri?.let { + val duration = Common.getAudioDuration(this, it) + val intent = Intent(this, ActivitySave::class.java).apply { + putExtra(ActivitySave.KEY_Path, it.toString()) + putExtra(ActivitySave.KEY_Time, duration) + } + startActivity(intent) + } + } + + initList() + + binding.btnimport.setOnClickListener(this) + binding.record.setOnClickListener(this) + binding.back.setOnClickListener(this) + } + + private fun initList() { + val itemHelper = ItemDecoration(5, 5, 0) + binding.recyclerImport.addItemDecoration(itemHelper) + binding.recyclerImport.layoutManager = GridLayoutManager(this, 3) + val all = DbTool.getAllCustomization() + + adapter = + AdapterLike(this, all, true) + binding.recyclerImport.adapter = adapter + + } + + + private fun checkAndRequestAudioPermission() { + if (ContextCompat.checkSelfPermission(this, Common.permission_record_audio) + != PackageManager.PERMISSION_GRANTED + ) { + requestRecordAudioLauncher!!.launch(Common.permission_record_audio) + } else { + intentRecordAudio() + } + } + + private fun intentRecordAudio() { + val intent = Intent(this, ActivityRecord::class.java) + startActivity(intent) + } + + private fun importAudio() { + val intent = Intent(Intent.ACTION_GET_CONTENT) + intent.type = "audio/*" + audioPickerLauncher!!.launch("audio/*") + } + + override fun onClick(v: View?) { + if (v == binding.btnimport) { + onClickTimer(0) + } else if (v == binding.record) { + onClickTimer(1) + } else if (v == binding.back) { + finish() + } + } + + override fun onResume() { + super.onResume() + refresh() + } + + private fun refresh() { + if (adapter != null) { + val all = DbTool.getAllCustomization() + adapter!!.updateData(all) + } + } + private fun onClickTimer(type: Int) { + when (type) { + 0 -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + if (ContextCompat.checkSelfPermission( + this, + Common.permission_read_audio[0] + ) + != PackageManager.PERMISSION_GRANTED + ) { + requestStorePermissionsLauncher!!.launch(Common.permission_read_audio) + + } else { + importAudio() + } + } else { + if (ContextCompat.checkSelfPermission( + this, + Manifest.permission.WRITE_EXTERNAL_STORAGE + ) + != PackageManager.PERMISSION_GRANTED || + ContextCompat.checkSelfPermission( + this, + Manifest.permission.READ_EXTERNAL_STORAGE + ) + != PackageManager.PERMISSION_GRANTED + ) { + requestStorePermissionsLauncher!!.launch(Common.permission_store) + + } else { + importAudio() + } + } + + 1 -> checkAndRequestAudioPermission() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/prank/app/color/activity/ActivityLike.kt b/app/src/main/java/com/prank/app/color/activity/ActivityLike.kt new file mode 100644 index 0000000..6ef827b --- /dev/null +++ b/app/src/main/java/com/prank/app/color/activity/ActivityLike.kt @@ -0,0 +1,72 @@ +package com.prank.app.color.activity + +import android.os.Bundle +import android.view.View +import androidx.appcompat.app.AppCompatActivity +import androidx.recyclerview.widget.GridLayoutManager +import com.prank.app.color.dbdata.DbTool +import com.prank.app.color.databinding.ActivityLikeBinding +import com.prank.app.color.list.AdapterLike +import com.prank.app.color.utils.Common +import com.prank.app.color.utils.ItemDecoration + +class ActivityLike : AppCompatActivity(), View.OnClickListener { + private lateinit var binding: ActivityLikeBinding + + private var likeAdapter: AdapterLike? = null + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityLikeBinding.inflate(layoutInflater) + setContentView(binding.root) + Common.setStatusBarTextColor(this, true) + binding.back.setOnClickListener(this) + + + binding.list.run { + layoutManager = GridLayoutManager(this@ActivityLike, 2) + val all = DbTool.getAllLike() + if (all.size == 0) { + binding.layoutEmpty.visibility = View.VISIBLE + binding.list.visibility = View.GONE + } else { + binding.layoutEmpty.visibility = View.GONE + binding.list.visibility = View.VISIBLE + } + likeAdapter = AdapterLike( + this@ActivityLike, + all, + false + ) + val itemHelper = + ItemDecoration(10, 10, 5) + addItemDecoration(itemHelper) + adapter = likeAdapter + } + + } + + override fun onClick(v: View?) { + if (v == binding.back) { + finish() + } + } + + override fun onResume() { + super.onResume() + refresh() + } + + fun refresh() { + if (likeAdapter != null) { + val all = DbTool.getAllLike() + if (all.size == 0) { + binding.layoutEmpty.visibility = View.VISIBLE + binding.list.visibility = View.GONE + } else { + binding.layoutEmpty.visibility = View.GONE + binding.list.visibility = View.VISIBLE + } + likeAdapter!!.updateData(all) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/prank/app/color/activity/ActivityList.java b/app/src/main/java/com/prank/app/color/activity/ActivityList.java new file mode 100644 index 0000000..7131bdd --- /dev/null +++ b/app/src/main/java/com/prank/app/color/activity/ActivityList.java @@ -0,0 +1,61 @@ +package com.prank.app.color.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.GridLayoutManager; + +import com.prank.app.color.dbdata.MyData; +import com.prank.app.color.dbdata.MyInfo; +import com.prank.app.color.databinding.ActivityListBinding; +import com.prank.app.color.list.AdapterList; +import com.prank.app.color.api.OnClickListener; +import com.prank.app.color.utils.Common; +import com.prank.app.color.utils.ItemDecoration; + +public class ActivityList extends AppCompatActivity implements View.OnClickListener, OnClickListener { + + private ActivityListBinding activityListBinding; + private MyData data; + private int colorIndex; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Common.setStatusBarTextColor(this,true); + activityListBinding = ActivityListBinding.inflate(getLayoutInflater()); + setContentView(activityListBinding.getRoot()); + data = (MyData) getIntent().getSerializableExtra(Common.KEY_LIST_DATA); + colorIndex = getIntent().getIntExtra(Common.KEY_LIST_COLOR_POS,0); + activityListBinding.categoryName.setText(data.getName()); + onList(); + activityListBinding.back.setOnClickListener(this); + } + + private void onList() { + ItemDecoration itemHelper = new ItemDecoration(10, 10, 0); + activityListBinding.listRecycler.addItemDecoration(itemHelper); + activityListBinding.listRecycler.setLayoutManager(new GridLayoutManager(this, 2)); + AdapterList adapterList = new AdapterList(this, data.getInfoList(),0,this); + activityListBinding.listRecycler.setAdapter(adapterList); + adapterList.setColorIndex(colorIndex); + } + + @Override + public void onClick(View v) { + if(v.equals(activityListBinding.back)){ + finish(); + } + + } + + @Override + public void onClickSoundsListener(MyInfo data) { + Intent intent = new Intent(this, ActivityPlay.class); + intent.putExtra(Common.KEY_PLAY_DATA, data); + intent.putExtra(Common.KEY_LIST_COLOR_POS, colorIndex); + startActivity(intent); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/prank/app/color/activity/ActivityPlay.java b/app/src/main/java/com/prank/app/color/activity/ActivityPlay.java new file mode 100644 index 0000000..e9210a7 --- /dev/null +++ b/app/src/main/java/com/prank/app/color/activity/ActivityPlay.java @@ -0,0 +1,258 @@ +package com.prank.app.color.activity; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.media.AudioManager; +import android.media.MediaPlayer; +import android.os.Bundle; +import android.os.CountDownTimer; +import android.util.Log; +import android.view.View; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.bumptech.glide.Glide; +import com.prank.app.color.R; +import com.prank.app.color.dbdata.DbTool; +import com.prank.app.color.dbdata.MyInfo; +import com.prank.app.color.databinding.ActivityPlayBinding; +import com.prank.app.color.dialog.DialogTimer; +import com.prank.app.color.list.AdapterList; +import com.prank.app.color.api.OnClickListener; +import com.prank.app.color.api.OnSelectTimerListener; +import com.prank.app.color.utils.Common; +import com.prank.app.color.utils.ItemDecoration; + +import java.io.IOException; +import java.util.List; + +public class ActivityPlay extends AppCompatActivity implements View.OnClickListener, OnSelectTimerListener, OnClickListener { + + private ActivityPlayBinding playBinding; + + private MyInfo info; + private DialogTimer dialogTimer; + + private MediaPlayer mediaPlayer; + private BroadcastReceiver volumeReceiver; + private CountDownTimer countDownTimer; + + private boolean isPause = false; + private int color; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + playBinding = ActivityPlayBinding.inflate(getLayoutInflater()); + setContentView(playBinding.getRoot()); + Common.setStatusBarTextColor(this, true); + info = (MyInfo) getIntent().getSerializableExtra(Common.KEY_PLAY_DATA); + color = getIntent().getIntExtra(Common.KEY_LIST_COLOR_POS, 0); +// playBinding.constraintLayout.setBackground(ContextCompat.getDrawable(this, Tools.playBgs[color])); + initAudio(); + String covert = info.getCovert(); + if (covert != null && !covert.isEmpty()) { + Glide.with(this).load(covert) + .placeholder(R.drawable.im_def_sounds) + .into(playBinding.image); + } else { + Glide.with(this).load(R.drawable.im_def_sounds) + .into(playBinding.image); + } + playBinding.name.setText(info.getName()); + playBinding.back.setOnClickListener(this); + playBinding.btnPlay.setOnClickListener(this); + playBinding.imLike.setOnClickListener(this); + playBinding.imLoop.setOnClickListener(this); + playBinding.imTimer.setOnClickListener(this); + Common.setVolume(this, playBinding.seekbar); + playBinding.linearLayout.setBackground(ContextCompat.getDrawable(this, Common.playBgs[color])); + + initLike(); + loadMore(); + volumeReceiver(); + + } + + private void stopCountDown() { + if (countDownTimer != null) { + countDownTimer.cancel(); + } + } + + private void startCountDown(long time) { + stopCountDown(); + countDownTimer = new CountDownTimer(time, 1000) { + @Override + public void onTick(long millisUntilFinished) { + } + + @Override + public void onFinish() { + dialogTimer.setOffSelected(); + if (!mediaPlayer.isPlaying()) { + playBinding.btnPlay.setSelected(true); + mediaPlayer.start(); + playBinding.rippleView.startRipple(); + } + } + }; + countDownTimer.start(); + } + + private void volumeReceiver() { + volumeReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + if (intent.getAction().equals("android.media.VOLUME_CHANGED_ACTION")) { + AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); + int currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC); + if (playBinding.seekbar.getProgress() != currentVolume) { + playBinding.seekbar.setProgress(currentVolume); + } + + } + } + }; + IntentFilter filter = new IntentFilter("android.media.VOLUME_CHANGED_ACTION"); + registerReceiver(volumeReceiver, filter); + } + + private void initLike() { + Log.d("---------", "--------info=" + info.isLike()); + boolean b = DbTool.checkLike(info); + playBinding.imLike.setSelected(b); + } + + private void loadMore() { + List more = DbTool.getMore(); + ItemDecoration itemHelper = new ItemDecoration(0, 0, (int) Common.dpToPx(3)); + AdapterList adapterList = new AdapterList(this, more, 1, this); + playBinding.moreRecycler.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); + playBinding.moreRecycler.setAdapter(adapterList); + playBinding.moreRecycler.addItemDecoration(itemHelper); + adapterList.setColorIndex(color); + } + + private void initAudio() { + showPlayBtn(false); + mediaPlayer = new MediaPlayer(); + try { + mediaPlayer.reset(); + mediaPlayer.setDataSource(info.getAudioUrl()); + mediaPlayer.prepareAsync(); + mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { + @Override + public void onPrepared(MediaPlayer mp) { + showPlayBtn(true); + } + }); + + mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { + @Override + public void onCompletion(MediaPlayer mp) { + playBinding.rippleView.stopRipple(); + playBinding.btnPlay.setSelected(false); + isPause = false; + } + }); + + } catch (IOException ioException) { + showPlayBtn(true); + } + } + + private void showPlayBtn(boolean showBtn) { + if (showBtn) { + playBinding.btnPlay.setVisibility(View.VISIBLE); + playBinding.playLoading.setVisibility(View.GONE); + } else { + playBinding.btnPlay.setVisibility(View.GONE); + playBinding.playLoading.setVisibility(View.VISIBLE); + } + } + + + @Override + public void onClick(View v) { + if (v.equals(playBinding.back)) { + finish(); + } else if (v.equals(playBinding.btnPlay)) { + boolean selected = playBinding.btnPlay.isSelected(); + if (selected) { + if (mediaPlayer.isPlaying()) { + playBinding.rippleView.pauseRipple(); + mediaPlayer.pause(); + isPause = true; + } + } else { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + if (isPause) { + playBinding.rippleView.resumeRipple(); + } else { + playBinding.rippleView.startRipple(); + } + isPause = false; + } + } + playBinding.btnPlay.setSelected(!selected); + + } else if (v.equals(playBinding.imLike)) { + playBinding.imLike.setSelected(!playBinding.imLike.isSelected()); + boolean selected = playBinding.imLike.isSelected(); + if (selected) { + info.setColorIndex(color); + DbTool.addLike(info); + } else { + DbTool.removeLike(info); + } + } else if (v.equals(playBinding.imLoop)) { + playBinding.imLoop.setSelected(!playBinding.imLoop.isSelected()); + mediaPlayer.setLooping(playBinding.imLoop.isSelected()); + } else if (v.equals(playBinding.imTimer)) { + if (dialogTimer == null) { + dialogTimer = new DialogTimer(ActivityPlay.this, this); + } + dialogTimer.showTop(playBinding.imTimer); + } + + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (mediaPlayer.isPlaying()) { + mediaPlayer.stop(); + isPause = false; + playBinding.rippleView.stopRipple(); + } + mediaPlayer.release(); + mediaPlayer = null; + stopCountDown(); + } + + @Override + public void onClickTimerListener(long time) { + dialogTimer.hide(); + if (time == -1) { + stopCountDown(); + } else { + startCountDown(time); + } + + } + + @Override + public void onClickSoundsListener(MyInfo data) { + Intent intent = new Intent(this, ActivityPlay.class); + intent.putExtra(Common.KEY_PLAY_DATA, data); + startActivity(intent); + finish(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/prank/app/color/activity/ActivityRecord.java b/app/src/main/java/com/prank/app/color/activity/ActivityRecord.java new file mode 100644 index 0000000..608e5cf --- /dev/null +++ b/app/src/main/java/com/prank/app/color/activity/ActivityRecord.java @@ -0,0 +1,88 @@ +package com.prank.app.color.activity; + +import android.annotation.SuppressLint; +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.os.SystemClock; +import android.view.View; + +import androidx.appcompat.app.AppCompatActivity; + +import com.prank.app.color.R; +import com.prank.app.color.databinding.ActivityRecorderBinding; +import com.prank.app.color.utils.Common; +import com.prank.app.color.utils.RecorderUtils; + +public class ActivityRecord extends AppCompatActivity { + private ActivityRecorderBinding binding; + private long startTime; + private long elapsedTime; + private Handler handler = new Handler(); + private Runnable runnable; + private boolean isCreate = false; + + private RecorderUtils recorderUtils; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + binding = ActivityRecorderBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + Common.setStatusBarTextColor(this, true); + recorderUtils = new RecorderUtils(this); + + binding.audioTime.setText(R.string.time_init); + + initEvent(); + } + + private void initEvent() { + binding.back.setOnClickListener(v -> finish()); + binding.imMic.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + binding.imMic.setSelected(!binding.imMic.isSelected()); + createSound(); + } + }); + } + + private void createSound() { + if (!isCreate) { + recorderUtils.startRecording(); + isCreate = true; + runnable = new Runnable() { + @SuppressLint("DefaultLocale") + @Override + public void run() { + long currentTime = SystemClock.elapsedRealtime(); + elapsedTime = currentTime - startTime; + int milliseconds = (int) (elapsedTime % 1000) / 10; + int seconds = (int) (elapsedTime / 1000) % 60; + int minutes = (int) (elapsedTime / (1000 * 60)) % 60; + binding.audioTime.setText(String.format("%02d : %02d : %02d", minutes, seconds, milliseconds)); + handler.postDelayed(this, 10); + } + }; + startTime = SystemClock.elapsedRealtime(); + handler.post(runnable); + } else { + recorderUtils.stopRecording(); + + handler.removeCallbacks(runnable); + Intent intent = new Intent(ActivityRecord.this, ActivitySave.class); + intent.putExtra(ActivitySave.KEY_Time, elapsedTime); + intent.putExtra(ActivitySave.KEY_Path, recorderUtils.getTempFileName()); + intent.putExtra(ActivitySave.KEY_import, 1); + startActivity(intent); + finish(); + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + handler.removeCallbacks(runnable); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/prank/app/color/activity/ActivitySave.java b/app/src/main/java/com/prank/app/color/activity/ActivitySave.java new file mode 100644 index 0000000..55857a1 --- /dev/null +++ b/app/src/main/java/com/prank/app/color/activity/ActivitySave.java @@ -0,0 +1,218 @@ +package com.prank.app.color.activity; + +import android.annotation.SuppressLint; +import android.content.ContentResolver; +import android.content.Context; +import android.content.Intent; +import android.media.AudioAttributes; +import android.media.MediaPlayer; +import android.net.Uri; +import android.os.Bundle; +import android.os.Handler; +import android.os.SystemClock; +import android.text.TextUtils; +import android.util.Log; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import com.prank.app.color.R; +import com.prank.app.color.dbdata.DbTool; +import com.prank.app.color.dbdata.MyInfo; +import com.prank.app.color.databinding.ActivitySaveBinding; +import com.prank.app.color.utils.Common; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; + +public class ActivitySave extends AppCompatActivity { + + private String path; + + private MediaPlayer mediaPlayer; + private Handler handler = new Handler(); + private Runnable timeUpdater; + private long startTime; + private long elapsedTime; + private long audioDuration; + + public static String KEY_Time = "KEY_time"; + public static String KEY_Path = "KEY_path"; + public static String KEY_import = "flag"; + private ActivitySaveBinding binding; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + binding = ActivitySaveBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + + Common.setStatusBarTextColor(this, true); + binding.audioTime.setText(R.string.time_init); + initData(); + initEvent(); + + + } + + private void togglePrank() throws IOException { + if (binding.imPlayBtn.isSelected()) { + initMediaPlayer(); + } else { + stopPrank(); + } + } + + private void stopPrank() { + handler.removeCallbacks(timeUpdater); + if (mediaPlayer != null) { + mediaPlayer.release(); + mediaPlayer = null; + } + } + + private void initMediaPlayer() { + if (mediaPlayer == null) { + mediaPlayer = new MediaPlayer(); + mediaPlayer.setAudioAttributes( + new AudioAttributes.Builder() + .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) + .setUsage(AudioAttributes.USAGE_MEDIA) + .build()); + try { + mediaPlayer.setDataSource(path); + } catch (Exception ex) { + + } + mediaPlayer.setOnPreparedListener(mp -> { + mediaPlayer.start(); + startTimer(); + }); + mediaPlayer.setOnCompletionListener(mp -> { + binding.imPlayBtn.setSelected(false); + handler.removeCallbacks(timeUpdater); + }); + mediaPlayer.prepareAsync(); + } else { + mediaPlayer.start(); + startTimer(); + } + + } + + + private void startTimer() { + if (timeUpdater == null) { + timeUpdater = new Runnable() { + @SuppressLint("DefaultLocale") + @Override + public void run() { + if (mediaPlayer != null && mediaPlayer.isPlaying()) { + long currentTime = SystemClock.elapsedRealtime(); + elapsedTime = currentTime - startTime; + int milliseconds = (int) (elapsedTime % 1000) / 10; + int seconds = (int) (elapsedTime / 1000) % 60; + int minutes = (int) (elapsedTime / (1000 * 60)) % 60; + binding.audioTime.setText(String.format("%02d : %02d : %02d", minutes, seconds, milliseconds)); + handler.postDelayed(this, 10); + } + + } + }; + } + startTime = SystemClock.elapsedRealtime(); + handler.post(timeUpdater); + } + + private void initEvent() { + binding.back.setOnClickListener(v -> finish()); + binding.imPlayBtn.setOnClickListener(v -> { + binding.imPlayBtn.setSelected(!binding.imPlayBtn.isSelected()); + try { + togglePrank(); + } catch (IOException e) { + Log.e("SaveActivity", "Error toggling prank", e); + } + }); + binding.save.setOnClickListener(v -> { + String name = binding.saveEdit.getText().toString().trim(); + boolean b = DbTool.checkName(name); + if (!TextUtils.isEmpty(name)) { + if(!b){ + binding.saveEdit.setText(""); + Toast.makeText(ActivitySave.this, getString(R.string.name_hint), Toast.LENGTH_SHORT).show(); + return; + } + saveData(name); + Toast.makeText(ActivitySave.this, getString(R.string.save_tips), Toast.LENGTH_SHORT).show(); + finish(); + } else { + Toast.makeText(ActivitySave.this, getString(R.string.save_tip), Toast.LENGTH_SHORT).show(); + } + }); + } + + private void saveData(String name) { + File cacheDir = getCacheDir(); + File sourceFile = new File(path); + File destinationFile = new File(cacheDir, name + ".mp3"); + + if (sourceFile.renameTo(destinationFile)) { + MyInfo mydata = new MyInfo(); + mydata.setLike(false); + mydata.setName(name); + mydata.setCustomization(true); + mydata.setAudioUrl(destinationFile.getAbsolutePath()); + DbTool.getBoxBean().put(mydata); + } else { + Log.e("SaveActivity", "Failed to rename file"); + } + } + + + private String readFileFromUri(Context context, Uri uri) { + ContentResolver contentResolver = context.getContentResolver(); + try (InputStream inputStream = contentResolver.openInputStream(uri); + FileOutputStream outputStream = new FileOutputStream(new File(getCacheDir(), "temp_audio_file.mp3"))) { + + if (inputStream == null) { + Log.e("SaveActivity", "Input stream is null"); + return null; + } + byte[] buffer = new byte[1024]; + int bytesRead; + while ((bytesRead = inputStream.read(buffer)) != -1) { + outputStream.write(buffer, 0, bytesRead); + } + return new File(getCacheDir(), "temp_audio_file.mp3").getAbsolutePath(); + } catch (IOException e) { + Log.e("SaveActivity", "Error reading file from URI", e); + return null; + } + } + + private void initData() { + Intent intent = getIntent(); + audioDuration = intent.getLongExtra(KEY_Time, 0); + int importFlag = intent.getIntExtra(KEY_import, 0); + + if (importFlag == 1) { + path = intent.getStringExtra(KEY_Path); + Log.e("zzj", "save path is" + path); + } else { + String uriPath = intent.getStringExtra(KEY_Path); + Uri uri = Uri.parse(uriPath); + path = readFileFromUri(this, uri); + } + } + + + + @Override + protected void onDestroy() { + super.onDestroy(); + stopPrank(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/prank/app/color/activity/ActivityWel.java b/app/src/main/java/com/prank/app/color/activity/ActivityWel.java new file mode 100644 index 0000000..1042373 --- /dev/null +++ b/app/src/main/java/com/prank/app/color/activity/ActivityWel.java @@ -0,0 +1,55 @@ +package com.prank.app.color.activity; + +import android.content.Intent; +import android.os.Bundle; +import android.os.CountDownTimer; + +import androidx.appcompat.app.AppCompatActivity; + +import com.prank.app.color.databinding.ActivityWelBinding; +import com.prank.app.color.utils.Common; + +public class ActivityWel extends AppCompatActivity { + + private long time = 3000; + private ActivityWelBinding binding; + private CountDownTimer countDownTimer; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + binding = ActivityWelBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + Common.setStatusBarTextColor(this, true); + countDownTimer = new CountDownTimer(time, 200) { + @Override + public void onTick(long millisUntilFinished) { + int progressPercentage = (int) ((100 * millisUntilFinished) / time); + int Percentage = 100 - progressPercentage; + binding.loadingPb.setProgress(Percentage); + } + + @Override + public void onFinish() { + welcomeMain(); + } + }; + + countDownTimer.start(); + } + + private void welcomeMain() { + binding.loadingPb.setProgress(100); + Intent intent = new Intent(this, ActivityHome.class); + startActivity(intent); + finish(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (countDownTimer != null) { + countDownTimer.cancel(); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/prank/app/color/api/OnClickListener.java b/app/src/main/java/com/prank/app/color/api/OnClickListener.java new file mode 100644 index 0000000..c516633 --- /dev/null +++ b/app/src/main/java/com/prank/app/color/api/OnClickListener.java @@ -0,0 +1,8 @@ +package com.prank.app.color.api; + +import com.prank.app.color.dbdata.MyInfo; + +public interface OnClickListener { + + void onClickSoundsListener(MyInfo data); +} diff --git a/app/src/main/java/com/prank/app/color/api/OnSelectTimerListener.java b/app/src/main/java/com/prank/app/color/api/OnSelectTimerListener.java new file mode 100644 index 0000000..43b1852 --- /dev/null +++ b/app/src/main/java/com/prank/app/color/api/OnSelectTimerListener.java @@ -0,0 +1,6 @@ +package com.prank.app.color.api; + +public interface OnSelectTimerListener { + + void onClickTimerListener(long time); +} diff --git a/app/src/main/java/com/prank/app/color/dbdata/DbTool.java b/app/src/main/java/com/prank/app/color/dbdata/DbTool.java new file mode 100644 index 0000000..fe6983a --- /dev/null +++ b/app/src/main/java/com/prank/app/color/dbdata/DbTool.java @@ -0,0 +1,83 @@ +package com.prank.app.color.dbdata; + +import android.content.Context; + +import java.util.Collections; +import java.util.List; + +import io.objectbox.Box; +import io.objectbox.BoxStore; +import io.objectbox.query.Query; + +public class DbTool { + + private static BoxStore store; + + public static void init(Context context) { + store = MyObjectBox.builder() + .androidContext(context) + .build(); + } + + public static Box getBoxBean() { + return store.boxFor(MyInfo.class); + } + + public static List getAllLike() { + Query query = DbTool.getBoxBean().query(MyInfo_.isLike.equal(true)).build(); + List data = query.find(); + query.close(); + return data; + } + + public static List getAllCustomization() { + Query query = DbTool.getBoxBean().query(MyInfo_.isCustomization.equal(true)).build(); + List data = query.find(); + query.close(); + return data; + } + + + public static List getMore() { + Query query = DbTool.getBoxBean().query(MyInfo_.isCustomization.equal(false)).build(); + List data = query.find(); + query.close(); + Collections.shuffle(data); + return data.subList(0, 11); + } + public static boolean checkLike(MyInfo info) { + Query query = DbTool.getBoxBean().query(MyInfo_.name.equal(info.getName())).build(); + MyInfo data = query.findFirst(); + query.close(); + if (data != null) { + return data.isLike(); + } else { + return false; + } + + } + + public static boolean checkName(String name) { + Query query = DbTool.getBoxBean().query(MyInfo_.name.equal(name)).build(); + MyInfo data = query.findFirst(); + query.close(); + if (data != null) { + return false; + } else { + return true; + } + + } + + public static void addLike(MyInfo info) { + info.setLike(true); + DbTool.getBoxBean().put(info); + } + + public static void removeLike(MyInfo info) { + info.setLike(false); + DbTool.getBoxBean().put(info); + + } + +} diff --git a/app/src/main/java/com/prank/app/color/dbdata/MyData.java b/app/src/main/java/com/prank/app/color/dbdata/MyData.java new file mode 100644 index 0000000..230d828 --- /dev/null +++ b/app/src/main/java/com/prank/app/color/dbdata/MyData.java @@ -0,0 +1,50 @@ +package com.prank.app.color.dbdata; + +import java.io.Serializable; +import java.util.List; + +import io.objectbox.annotation.Entity; +import io.objectbox.annotation.Id; + + +@Entity +public class MyData implements Serializable { + @Id + private long id; + private String name; + private String covert; + + private List infoList; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCovert() { + return covert; + } + + public void setCovert(String covert) { + this.covert = covert; + } + + public List getInfoList() { + return infoList; + } + + public void setInfoList(List infoList) { + this.infoList = infoList; + } +} diff --git a/app/src/main/java/com/prank/app/color/dbdata/MyInfo.java b/app/src/main/java/com/prank/app/color/dbdata/MyInfo.java new file mode 100644 index 0000000..713be3e --- /dev/null +++ b/app/src/main/java/com/prank/app/color/dbdata/MyInfo.java @@ -0,0 +1,78 @@ +package com.prank.app.color.dbdata; + + +import java.io.Serializable; + +import io.objectbox.annotation.Entity; +import io.objectbox.annotation.Id; + +@Entity +public class MyInfo implements Serializable { + @Id + private long id; + + private String name; + private String covert; + + private String audioUrl; + private boolean isLike; + + private boolean isCustomization; + private int colorIndex; + + public int getColorIndex() { + return colorIndex; + } + + public void setColorIndex(int colorIndex) { + this.colorIndex = colorIndex; + } + + public boolean isCustomization() { + return isCustomization; + } + + public void setCustomization(boolean customization) { + isCustomization = customization; + } + + public boolean isLike() { + return isLike; + } + + public void setLike(boolean like) { + isLike = like; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCovert() { + return covert; + } + + public void setCovert(String covert) { + this.covert = covert; + } + + public String getAudioUrl() { + return audioUrl; + } + + public void setAudioUrl(String audioUrl) { + this.audioUrl = audioUrl; + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } +} diff --git a/app/src/main/java/com/prank/app/color/dialog/DialogTimer.java b/app/src/main/java/com/prank/app/color/dialog/DialogTimer.java new file mode 100644 index 0000000..e6adad2 --- /dev/null +++ b/app/src/main/java/com/prank/app/color/dialog/DialogTimer.java @@ -0,0 +1,104 @@ +package com.prank.app.color.dialog; + +import android.app.Activity; +import android.graphics.drawable.BitmapDrawable; +import android.util.Log; +import android.view.Gravity; +import android.view.View; +import android.view.ViewGroup; +import android.widget.PopupWindow; + +import com.prank.app.color.databinding.DialogTimerBinding; +import com.prank.app.color.api.OnSelectTimerListener; +import com.prank.app.color.utils.CustomerText; + +public class DialogTimer implements View.OnClickListener { + private DialogTimerBinding binding; + private PopupWindow popupWindow; + private OnSelectTimerListener mListener; + + public DialogTimer(Activity context, OnSelectTimerListener listener) { + mListener = listener; + binding = DialogTimerBinding.inflate(context.getLayoutInflater()); + popupWindow = new PopupWindow(binding.getRoot(), ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); + popupWindow.setBackgroundDrawable(new BitmapDrawable()); + popupWindow.setOutsideTouchable(true); + popupWindow.setFocusable(true); + binding.tvOff.setSelected(true); + binding.tvOff.setOnClickListener(this); + binding.tv15s.setOnClickListener(this); + binding.tv30s.setOnClickListener(this); + binding.tv1m.setOnClickListener(this); + binding.tv5m.setOnClickListener(this); + } + + public void showTop(View view) { + + int[] location = new int[2]; + view.getLocationOnScreen(location); + + int x = location[0]; + int y = location[1]; + + + int popupHeight = popupWindow.getHeight(); + int height = view.getHeight(); + int width = view.getWidth(); + Log.d("-------------", "--------x=" + x + "---y=" + y + "----popupHeight=" + popupHeight); +// popupWindow.showAtLocation(view, Gravity.NO_GRAVITY, x-30, y - popupHeight+height); + popupWindow.showAsDropDown(view, -50, + 0, + Gravity.NO_GRAVITY); + } + + private void setSelected(CustomerText tv) { + int childCount = binding.layoutTime.getChildCount(); + for (int i = 0; i < childCount; i++) { + View child = binding.layoutTime.getChildAt(i); + if (child instanceof CustomerText) { + CustomerText tvTimer = (CustomerText) child; + if (tvTimer.equals(tv)) { + tvTimer.setSelected(true); + } else { + tvTimer.setSelected(false); + } + System.out.println("TextView: " + tvTimer.getText()); + } + } + + } + public void hide() { + popupWindow.dismiss(); + + } + public void setOffSelected() { + setSelected(binding.tvOff); + + } + + @Override + public void onClick(View v) { + if (v instanceof CustomerText) { + CustomerText v1 = (CustomerText) v; + String string = v1.getText().toString(); + switch (string){ + case "off": + mListener.onClickTimerListener(-1); + break; + case "15 sec": + mListener.onClickTimerListener(15*1000L); + break; + case "30 sec": + mListener.onClickTimerListener(30*1000L); + break; + case "1 min": + mListener.onClickTimerListener(60*1000L); + break; + case "5 min": + mListener.onClickTimerListener(5*60*1000L); + break; + } + setSelected(v1); + } + } +} diff --git a/app/src/main/java/com/prank/app/color/list/AdapterHome.java b/app/src/main/java/com/prank/app/color/list/AdapterHome.java new file mode 100644 index 0000000..c481e83 --- /dev/null +++ b/app/src/main/java/com/prank/app/color/list/AdapterHome.java @@ -0,0 +1,84 @@ +package com.prank.app.color.list; + +import android.content.Context; +import android.content.Intent; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.prank.app.color.activity.ActivityList; +import com.prank.app.color.databinding.ItemHomeBinding; +import com.prank.app.color.dbdata.MyData; +import com.prank.app.color.utils.Common; + +import java.util.List; + + +public class AdapterHome extends RecyclerView.Adapter { + + private final List mValues; + + private Context mCon; + + + public AdapterHome(Context context, List items) { + mValues = items; + this.mCon = context; + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + + return new ViewHolder(ItemHomeBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); + + } + + @Override + public void onBindViewHolder(final ViewHolder holder, int position) { + int absoluteAdapterPosition = holder.getAbsoluteAdapterPosition(); + int i = absoluteAdapterPosition % 5; + holder.vb.relative.setBackground(ContextCompat.getDrawable(mCon, Common.bgs[i])); + MyData myData = mValues.get(absoluteAdapterPosition); + String covert = myData.getCovert(); + Glide.with(mCon).load(covert).into(holder.vb.image); + holder.vb.name.setText(myData.getName()); + holder.vb.relative.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(mCon, ActivityList.class); + intent.putExtra(Common.KEY_LIST_DATA, myData); + intent.putExtra(Common.KEY_LIST_COLOR_POS, i); + mCon.startActivity(intent); + } + }); + if(absoluteAdapterPosition == mValues.size()-1||absoluteAdapterPosition == mValues.size()-2){ + holder.vb.view.setVisibility(View.VISIBLE); + Log.d("TAG","------1"); + }else { + holder.vb.view.setVisibility(View.GONE); + Log.d("TAG","------2"); + } + + } + + @Override + public int getItemCount() { + return mValues.size(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + + private ItemHomeBinding vb; + + public ViewHolder(ItemHomeBinding binding) { + super(binding.getRoot()); + vb = binding; + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/prank/app/color/list/AdapterLike.java b/app/src/main/java/com/prank/app/color/list/AdapterLike.java new file mode 100644 index 0000000..67b2743 --- /dev/null +++ b/app/src/main/java/com/prank/app/color/list/AdapterLike.java @@ -0,0 +1,131 @@ +package com.prank.app.color.list; + +import android.content.Context; +import android.content.Intent; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.prank.app.color.R; +import com.prank.app.color.activity.ActivityPlay; +import com.prank.app.color.databinding.ItemLikeBinding; +import com.prank.app.color.dbdata.DbTool; +import com.prank.app.color.dbdata.MyInfo; +import com.prank.app.color.utils.Common; + +import java.io.File; +import java.util.List; + + +public class AdapterLike extends RecyclerView.Adapter { + + private List mValues; + private Context mCOn; + private boolean showDelete = false; + + + + public AdapterLike(Context context, List items, boolean showDelete) { + mValues = items; + mCOn = context; + this.showDelete = showDelete; + + } + + public void updateData(List items) { + mValues = items; + notifyDataSetChanged(); + } + + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + + return new ViewHolder(ItemLikeBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); + } + + @Override + public void onBindViewHolder(final ViewHolder holder, int position) { + MyInfo info = mValues.get(position); + holder.vb.ttvName.setText(info.getName()); + int colorIndex = info.getColorIndex(); + holder.vb.layout.setBackground(ContextCompat.getDrawable(mCOn, Common.recorderBgs[colorIndex])); + if (info.isCustomization()) { + Glide.with(mCOn).load(R.drawable.im_def_sounds).into(holder.vb.image); + } else { + Glide.with(mCOn).load(info.getCovert()).into(holder.vb.image); + } + + + if (holder.vb.layout.getTag() == null) { + holder.vb.layout.setTag(true); + + holder.vb.layout.post(() -> { + int width = holder.vb.layout.getWidth(); + ViewGroup.LayoutParams params = holder.vb.layout.getLayoutParams(); + params.height = width; + holder.vb.layout.setLayoutParams(params); + + }); + } + + if (showDelete) { +// if(position == mValues.size()-1||position == mValues.size()-2){ +// holder.vb.view.setVisibility(View.VISIBLE); +// }else { +// holder.vb.view.setVisibility(View.GONE); +// } + holder.vb.imDelete.setVisibility(View.VISIBLE); + holder.vb.imDelete.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + DbTool.getBoxBean().remove(info); + String audioUrl = info.getAudioUrl(); + int pos = holder.getBindingAdapterPosition(); + mValues.remove(pos); + notifyItemRemoved(pos); + File file = new File(audioUrl); + if (file.exists()) { + file.delete(); + } + + } + }); + } else { + holder.vb.imDelete.setVisibility(View.GONE); + } + + + holder.vb.layout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(mCOn, ActivityPlay.class); + intent.putExtra(Common.KEY_PLAY_DATA, info); + intent.putExtra(Common.KEY_LIST_COLOR_POS, colorIndex); + mCOn.startActivity(intent); + } + }); + } + + @Override + public int getItemCount() { + return mValues.size(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + + public ItemLikeBinding vb; + + public ViewHolder(ItemLikeBinding binding) { + super(binding.getRoot()); + vb = binding; + } + + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/prank/app/color/list/AdapterList.java b/app/src/main/java/com/prank/app/color/list/AdapterList.java new file mode 100644 index 0000000..b4f44a8 --- /dev/null +++ b/app/src/main/java/com/prank/app/color/list/AdapterList.java @@ -0,0 +1,88 @@ +package com.prank.app.color.list; + +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.prank.app.color.databinding.ItemListBinding; +import com.prank.app.color.dbdata.MyInfo; +import com.prank.app.color.api.OnClickListener; +import com.prank.app.color.utils.Common; + +import java.util.List; +public class AdapterList extends RecyclerView.Adapter { + private final List mValues; + private Context mCon; + private int type; + private OnClickListener mListener; + private int colorIndex; + public void setColorIndex(int colorIndex) { + this.colorIndex = colorIndex; + } + public AdapterList(Context context, List items, int mType, OnClickListener listener) { + mValues = items; + this.mCon = context; + type = mType; + mListener = listener; + } + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + return new ViewHolder(ItemListBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); + } + @Override + public void onBindViewHolder(final ViewHolder holder, int position) { + holder.vb.relative.setBackground(ContextCompat.getDrawable(mCon, Common.bgs[colorIndex])); + + if (holder.vb.relative.getTag() == null) { + holder.vb.relative.setTag(true); + + holder.vb.relative.post(() -> { + int width = holder.vb.relative.getWidth(); + ViewGroup.LayoutParams params = holder.vb.relative.getLayoutParams(); + params.height = width; + holder.vb.relative.setLayoutParams(params); + Log.d("------","------layoutParams.width="+width); + }); + } + + MyInfo info = mValues.get(position); + String covert = info.getCovert(); + Glide.with(mCon).load(covert).into(holder.vb.image); + holder.vb.name.setText(info.getName()); + holder.vb.getRoot().setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mListener.onClickSoundsListener(info); + } + }); + } + + @Override + public int getItemCount() { + return mValues.size(); + } + public class ViewHolder extends RecyclerView.ViewHolder { + private ItemListBinding vb; + public ViewHolder(ItemListBinding binding) { + super(binding.getRoot()); + vb = binding; + ViewGroup.LayoutParams layoutParams = vb.relative.getLayoutParams(); + Log.d("------","------layoutParams.width="+layoutParams.width); + +// if(type == 0){ +// layoutParams.width = RelativeLayout.LayoutParams.WRAP_CONTENT; +// vb.name.setMaxLines(2); +// }else { +// layoutParams.width = (int) MyUtils.dpToPx(130); +// vb.name.setMaxLines(1); +// } + vb.relative.setLayoutParams(layoutParams); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/prank/app/color/utils/Common.java b/app/src/main/java/com/prank/app/color/utils/Common.java new file mode 100644 index 0000000..453797d --- /dev/null +++ b/app/src/main/java/com/prank/app/color/utils/Common.java @@ -0,0 +1,172 @@ +package com.prank.app.color.utils; + +import android.Manifest; +import android.app.Activity; +import android.content.ContentResolver; +import android.content.Context; +import android.media.AudioManager; +import android.media.MediaMetadataRetriever; +import android.net.Uri; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.widget.SeekBar; +import android.widget.TextView; + +import androidx.appcompat.app.AppCompatActivity; + +import com.prank.app.color.App; +import com.prank.app.color.R; +import com.prank.app.color.dbdata.MyData; +import com.prank.app.color.dbdata.MyInfo; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.StringWriter; +import java.util.ArrayList; +import java.util.List; + +public class Common { + + public static int[] bgs = new int[]{R.drawable.oval_stoke_1,R.drawable.oval_stoke_2,R.drawable.oval_stoke_3,R.drawable.oval_stoke_4, + R.drawable.oval_stoke_5}; + + public static int[] playBgs = new int[]{R.drawable.play_bg1,R.drawable.play_bg2,R.drawable.play_bg3,R.drawable.play_bg4, + R.drawable.play_bg5}; + + public static int[] recorderBgs = new int[]{R.drawable.shape_rect_stoke_12,R.drawable.shape_rect_stoke_12,R.drawable.shape_rect_stoke_12,R.drawable.shape_rect_stoke_12, + R.drawable.shape_rect_stoke_12,R.drawable.shape_rect_stoke_12}; + public static final String KEY_LIST_COLOR_POS = "list_page_color_pos"; + public static final String KEY_LIST_DATA = "list_page_data"; + public static final String KEY_PLAY_DATA = "play_page_data"; + + + + public static String[] permission_read_audio = {Manifest.permission.READ_MEDIA_AUDIO}; + + public static String permission_record_audio = Manifest.permission.RECORD_AUDIO; + public static String[] permission_store = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}; + + + public static void initFont(TextView tv) { + tv.setTypeface(App.defaultFont); + } + public static void setStatusBarTextColor(Activity activity, boolean dark) { + Window window = activity.getWindow(); + View decor = window.getDecorView(); + if (dark) { + decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + } else { + decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); + } + window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + } + + public static String getString(InputStream input) { + try { + char[] charArray = new char[input.available()]; + int count = 0; + StringWriter stringWriter = new StringWriter(); + InputStreamReader inputStreamReader = new InputStreamReader(input); + BufferedReader bufferedReader = new BufferedReader(inputStreamReader); + while ((count = bufferedReader.read(charArray)) != -1) { + stringWriter.write(charArray, 0, count); + } + return stringWriter.toString(); + } catch (IOException exception) { + return ""; + } + + } + + public static void setVolume(Context context, SeekBar seekBar) { + AudioManager audioManager = (AudioManager)context.getSystemService(AppCompatActivity.AUDIO_SERVICE); + int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); + seekBar.setMax(maxVolume); + seekBar.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_MUSIC)); + seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { + @Override + public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { + audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0); + } + + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + + } + + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + + } + }); + } + public static List getBean(String str) { + + try { + List data = new ArrayList(); + JSONArray jsonArray = new JSONArray(str); + + for (int i = 0; i < jsonArray.length(); i++) { + JSONObject it = jsonArray.getJSONObject(i); + JSONArray listArray = it.getJSONArray("list"); + List list = new ArrayList<>(); + for (int k = 0; k < listArray.length(); k++) { + JSONObject listBean = listArray.getJSONObject(k); + MyInfo info = new MyInfo(); + info.setAudioUrl(listBean.getString("mp3Url")); + info.setCovert(listBean.getString("preUrl")); + info.setName(listBean.getString("title")); + list.add(info); + } + + MyData newBean = new MyData(); + newBean.setCovert(it.getString("categoryUrl")); + newBean.setInfoList(list); + newBean.setName(it.getString("categoryName")); + data.add(newBean); + + } + + return data; + } catch (JSONException jo) { + return null; + } + } + + + public static long getAudioDuration(Context context, Uri uri) { + MediaMetadataRetriever retriever = new MediaMetadataRetriever(); + long duration = 0; + + try { + ContentResolver contentResolver = context.getContentResolver(); + retriever.setDataSource(context, uri); + String time = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); + duration = Long.parseLong(time); + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + retriever.release(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + return duration; + } + public static float dpToPx(float dpValue) { + float density = App.app.getResources().getDisplayMetrics().density; + return density * dpValue + 0.5f; + } + +} diff --git a/app/src/main/java/com/prank/app/color/utils/CustomerText.java b/app/src/main/java/com/prank/app/color/utils/CustomerText.java new file mode 100644 index 0000000..c29827f --- /dev/null +++ b/app/src/main/java/com/prank/app/color/utils/CustomerText.java @@ -0,0 +1,35 @@ +package com.prank.app.color.utils; + + + +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; + +import androidx.annotation.Nullable; + +import com.prank.app.color.R; + + +public class CustomerText extends androidx.appcompat.widget.AppCompatTextView { + + + public CustomerText(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + initAttrs(context,attrs); + } + + + private void initAttrs(Context context, AttributeSet attrs){ + TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MyTV); + boolean aBoolean = typedArray.getBoolean(R.styleable.MyTV_apply_font,false); + if(aBoolean){ + Common.initFont(this); + } + + typedArray.recycle(); + } + + + +} diff --git a/app/src/main/java/com/prank/app/color/utils/ItemDecoration.java b/app/src/main/java/com/prank/app/color/utils/ItemDecoration.java new file mode 100644 index 0000000..d099ece --- /dev/null +++ b/app/src/main/java/com/prank/app/color/utils/ItemDecoration.java @@ -0,0 +1,76 @@ +package com.prank.app.color.utils; + +import android.graphics.Rect; +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.recyclerview.widget.StaggeredGridLayoutManager; + +import com.prank.app.color.App; + + +public class ItemDecoration extends RecyclerView.ItemDecoration { + + private int v, h, ex; + + public ItemDecoration(int v, int h, int ex) { + this.v = Math.round(dpToPx(v)); + this.h = Math.round(dpToPx(h)); + this.ex = Math.round(dpToPx(ex)); + } + + @Override + public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) { + super.getItemOffsets(outRect, view, parent, state); + int spanCount = 1; + int spanSize = 1; + int spanIndex = 0; + + int childAdapterPosition = parent.getChildAdapterPosition(view); + RecyclerView.LayoutManager layoutManager = parent.getLayoutManager(); + if (layoutManager instanceof StaggeredGridLayoutManager) { + StaggeredGridLayoutManager staggeredGridLayoutManager = (StaggeredGridLayoutManager) layoutManager; + StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) view.getLayoutParams(); + spanCount = staggeredGridLayoutManager.getSpanCount(); + if (layoutParams.isFullSpan()) { + spanSize = spanCount; + } + spanIndex = layoutParams.getSpanIndex(); + } else if (layoutManager instanceof GridLayoutManager) { + GridLayoutManager gridLayoutManager = (GridLayoutManager) layoutManager; + GridLayoutManager.LayoutParams layoutParams = (GridLayoutManager.LayoutParams) view.getLayoutParams(); + spanCount = gridLayoutManager.getSpanCount(); + spanSize = gridLayoutManager.getSpanSizeLookup().getSpanSize(childAdapterPosition); + spanIndex = layoutParams.getSpanIndex(); + } else if (layoutManager instanceof LinearLayoutManager) { + outRect.left = v; + outRect.right = v; + outRect.bottom = h; + } + + if (spanSize == spanCount) { + outRect.left = v + ex; + outRect.right = v + ex; + outRect.bottom = h; + + } else { + int itemAllSpacing = (v * (spanCount + 1) + ex * 2) / spanCount; + int left = v * (spanIndex + 1) - itemAllSpacing * spanIndex + ex; + int right = itemAllSpacing - left; + outRect.left = left; + outRect.right = right; + outRect.bottom = h; + + } + + } + + + public static float dpToPx(float dpValue) { + float density = App.app.getResources().getDisplayMetrics().density; + return density * dpValue + 0.5f; + } +} diff --git a/app/src/main/java/com/prank/app/color/utils/RecorderUtils.java b/app/src/main/java/com/prank/app/color/utils/RecorderUtils.java new file mode 100644 index 0000000..25f467e --- /dev/null +++ b/app/src/main/java/com/prank/app/color/utils/RecorderUtils.java @@ -0,0 +1,57 @@ +package com.prank.app.color.utils; + +import android.content.Context; +import android.media.MediaRecorder; + +import java.io.File; +import java.io.IOException; + +public class RecorderUtils { + private MediaRecorder mediaRecorder; + private String tempFileName; + private String fileName; + private boolean isRecording = false; + + public RecorderUtils(Context context) { + + File dir = context.getCacheDir(); + File file = new File(dir, "temp_audio.mp3"); + tempFileName = file.getAbsolutePath(); + } + + + public void startRecording() { + if (isRecording) return; + mediaRecorder = new MediaRecorder(); + mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); + mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); + mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); + mediaRecorder.setOutputFile(tempFileName); + + try { + mediaRecorder.prepare(); + mediaRecorder.start(); + isRecording = true; + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void stopRecording() { + if (!isRecording) return; + + try { + mediaRecorder.stop(); + } catch (IllegalStateException e) { + e.printStackTrace(); + } finally { + mediaRecorder.release(); + mediaRecorder = null; + isRecording = false; + } + } + + public String getTempFileName() { + return tempFileName; + } +} diff --git a/app/src/main/java/com/prank/app/color/utils/RippleView.kt b/app/src/main/java/com/prank/app/color/utils/RippleView.kt new file mode 100644 index 0000000..25db7c5 --- /dev/null +++ b/app/src/main/java/com/prank/app/color/utils/RippleView.kt @@ -0,0 +1,122 @@ +package com.prank.app.color.utils + +import android.animation.ValueAnimator +import android.content.Context +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint +import android.util.AttributeSet +import android.view.View +import androidx.core.animation.doOnEnd + +class RippleView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null +) : View(context, attrs) { + + private val paint = Paint(Paint.ANTI_ALIAS_FLAG).apply { + color = Color.parseColor("#FFFFFF") + style = Paint.Style.FILL + } + + private val ripples = mutableListOf() + private val maxRadius = 200f + private val rippleDuration = 1000L + private val rippleDelay = 300L + + private var curisRunning = false + private var isPaused = false + + private val rippleRunnable = object : Runnable { + override fun run() { + if (!curisRunning || isPaused) return + val ripple = Ripple() + ripples.add(ripple) + ripple.start() + postDelayed(this, rippleDelay) + } + } + + fun startRipple() { + if (curisRunning) return + curisRunning = true + isPaused = false + post(rippleRunnable) + } + + fun stopRipple() { + curisRunning = false + isPaused = false + removeCallbacks(rippleRunnable) + ripples.forEach { it.cancel() } + ripples.clear() + invalidate() + } + + fun pauseRipple() { + isPaused = true + ripples.forEach { it.pause() } + removeCallbacks(rippleRunnable) + } + + fun resumeRipple() { + if (!curisRunning || !isPaused) return + isPaused = false + ripples.forEach { it.resume() } + post(rippleRunnable) + } + + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + val centerX = width / 2f + val centerY = height / 2f + val iterator = ripples.iterator() + while (iterator.hasNext()) { + val ripple = iterator.next() + if (!ripple.isRunning) { + iterator.remove() + continue + } + paint.alpha = (255 * (1 - ripple.progress)).toInt() + canvas.drawCircle(centerX, centerY, maxRadius * ripple.progress, paint) + } + if (ripples.isNotEmpty()) invalidate() + } + + inner class Ripple { + var progress = 0f + var isRunning = true + private var animator: ValueAnimator? = null + + fun start() { + animator = ValueAnimator.ofFloat(0f, 1f).apply { + duration = rippleDuration + addUpdateListener { + progress = it.animatedValue as Float + invalidate() + } + doOnEnd { + this@Ripple.isRunning = false + } + start() + } + } + + fun pause() { + if (animator?.isRunning == true) { + animator?.pause() + } + } + + fun resume() { + if (animator?.isPaused == true) { + animator?.resume() + } + } + + fun cancel() { + animator?.cancel() + isRunning = false + } + } +} diff --git a/app/src/main/res/color/seletor_color_timer.xml b/app/src/main/res/color/seletor_color_timer.xml new file mode 100644 index 0000000..cdf6e81 --- /dev/null +++ b/app/src/main/res/color/seletor_color_timer.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_back_black.xml b/app/src/main/res/drawable/ic_back_black.xml new file mode 100644 index 0000000..f53206f --- /dev/null +++ b/app/src/main/res/drawable/ic_back_black.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_delete_red.xml b/app/src/main/res/drawable/ic_delete_red.xml new file mode 100644 index 0000000..e285899 --- /dev/null +++ b/app/src/main/res/drawable/ic_delete_red.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_empty_data.xml b/app/src/main/res/drawable/ic_empty_data.xml new file mode 100644 index 0000000..b1ba883 --- /dev/null +++ b/app/src/main/res/drawable/ic_empty_data.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_noraml_loop.xml b/app/src/main/res/drawable/ic_noraml_loop.xml new file mode 100644 index 0000000..2ddd3d4 --- /dev/null +++ b/app/src/main/res/drawable/ic_noraml_loop.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_normal_favorite.xml b/app/src/main/res/drawable/ic_normal_favorite.xml new file mode 100644 index 0000000..2f28770 --- /dev/null +++ b/app/src/main/res/drawable/ic_normal_favorite.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_normal_play.xml b/app/src/main/res/drawable/ic_normal_play.xml new file mode 100644 index 0000000..e64d0aa --- /dev/null +++ b/app/src/main/res/drawable/ic_normal_play.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_normal_recording.xml b/app/src/main/res/drawable/ic_normal_recording.xml new file mode 100644 index 0000000..1ef277a --- /dev/null +++ b/app/src/main/res/drawable/ic_normal_recording.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/app/src/main/res/drawable/ic_red_like.xml b/app/src/main/res/drawable/ic_red_like.xml new file mode 100644 index 0000000..672bb31 --- /dev/null +++ b/app/src/main/res/drawable/ic_red_like.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_stoke_main.xml b/app/src/main/res/drawable/ic_stoke_main.xml new file mode 100644 index 0000000..0fb8079 --- /dev/null +++ b/app/src/main/res/drawable/ic_stoke_main.xml @@ -0,0 +1,11 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_true_loop.xml b/app/src/main/res/drawable/ic_true_loop.xml new file mode 100644 index 0000000..1db4919 --- /dev/null +++ b/app/src/main/res/drawable/ic_true_loop.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_true_pause.xml b/app/src/main/res/drawable/ic_true_pause.xml new file mode 100644 index 0000000..26fa317 --- /dev/null +++ b/app/src/main/res/drawable/ic_true_pause.xml @@ -0,0 +1,16 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_true_recording.xml b/app/src/main/res/drawable/ic_true_recording.xml new file mode 100644 index 0000000..b83b170 --- /dev/null +++ b/app/src/main/res/drawable/ic_true_recording.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/app/src/main/res/drawable/ic_true_timer.xml b/app/src/main/res/drawable/ic_true_timer.xml new file mode 100644 index 0000000..4a6acb3 --- /dev/null +++ b/app/src/main/res/drawable/ic_true_timer.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/ic_volume_white.xml b/app/src/main/res/drawable/ic_volume_white.xml new file mode 100644 index 0000000..b0f7f2b --- /dev/null +++ b/app/src/main/res/drawable/ic_volume_white.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/im_add_like.xml b/app/src/main/res/drawable/im_add_like.xml new file mode 100644 index 0000000..fb90a41 --- /dev/null +++ b/app/src/main/res/drawable/im_add_like.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/im_def_sounds.xml b/app/src/main/res/drawable/im_def_sounds.xml new file mode 100644 index 0000000..3145955 --- /dev/null +++ b/app/src/main/res/drawable/im_def_sounds.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/im_mic.xml b/app/src/main/res/drawable/im_mic.xml new file mode 100644 index 0000000..114433b --- /dev/null +++ b/app/src/main/res/drawable/im_mic.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/oval_stoke_1.xml b/app/src/main/res/drawable/oval_stoke_1.xml new file mode 100644 index 0000000..4a0222e --- /dev/null +++ b/app/src/main/res/drawable/oval_stoke_1.xml @@ -0,0 +1,9 @@ + + + + + + diff --git a/app/src/main/res/drawable/oval_stoke_2.xml b/app/src/main/res/drawable/oval_stoke_2.xml new file mode 100644 index 0000000..ce09591 --- /dev/null +++ b/app/src/main/res/drawable/oval_stoke_2.xml @@ -0,0 +1,9 @@ + + + + + + diff --git a/app/src/main/res/drawable/oval_stoke_3.xml b/app/src/main/res/drawable/oval_stoke_3.xml new file mode 100644 index 0000000..2754bd0 --- /dev/null +++ b/app/src/main/res/drawable/oval_stoke_3.xml @@ -0,0 +1,9 @@ + + + + + + diff --git a/app/src/main/res/drawable/oval_stoke_4.xml b/app/src/main/res/drawable/oval_stoke_4.xml new file mode 100644 index 0000000..29e8bc5 --- /dev/null +++ b/app/src/main/res/drawable/oval_stoke_4.xml @@ -0,0 +1,9 @@ + + + + + + diff --git a/app/src/main/res/drawable/oval_stoke_5.xml b/app/src/main/res/drawable/oval_stoke_5.xml new file mode 100644 index 0000000..708c64c --- /dev/null +++ b/app/src/main/res/drawable/oval_stoke_5.xml @@ -0,0 +1,9 @@ + + + + + + diff --git a/app/src/main/res/drawable/pb_oval_white_thumb.xml b/app/src/main/res/drawable/pb_oval_white_thumb.xml new file mode 100644 index 0000000..c13cb1b --- /dev/null +++ b/app/src/main/res/drawable/pb_oval_white_thumb.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/play_bg1.xml b/app/src/main/res/drawable/play_bg1.xml new file mode 100644 index 0000000..3ff2b12 --- /dev/null +++ b/app/src/main/res/drawable/play_bg1.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/play_bg2.xml b/app/src/main/res/drawable/play_bg2.xml new file mode 100644 index 0000000..80a7e10 --- /dev/null +++ b/app/src/main/res/drawable/play_bg2.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/play_bg3.xml b/app/src/main/res/drawable/play_bg3.xml new file mode 100644 index 0000000..e6be11b --- /dev/null +++ b/app/src/main/res/drawable/play_bg3.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/play_bg4.xml b/app/src/main/res/drawable/play_bg4.xml new file mode 100644 index 0000000..a8ce493 --- /dev/null +++ b/app/src/main/res/drawable/play_bg4.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/play_bg5.xml b/app/src/main/res/drawable/play_bg5.xml new file mode 100644 index 0000000..fdd3832 --- /dev/null +++ b/app/src/main/res/drawable/play_bg5.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/progress_draw_play.xml b/app/src/main/res/drawable/progress_draw_play.xml new file mode 100644 index 0000000..30dfc01 --- /dev/null +++ b/app/src/main/res/drawable/progress_draw_play.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/progress_welcome.xml b/app/src/main/res/drawable/progress_welcome.xml new file mode 100644 index 0000000..7c662ed --- /dev/null +++ b/app/src/main/res/drawable/progress_welcome.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_favorite.xml b/app/src/main/res/drawable/selector_favorite.xml new file mode 100644 index 0000000..eb82d73 --- /dev/null +++ b/app/src/main/res/drawable/selector_favorite.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_looper.xml b/app/src/main/res/drawable/selector_looper.xml new file mode 100644 index 0000000..baef2a0 --- /dev/null +++ b/app/src/main/res/drawable/selector_looper.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_micphone.xml b/app/src/main/res/drawable/selector_micphone.xml new file mode 100644 index 0000000..66ee7fd --- /dev/null +++ b/app/src/main/res/drawable/selector_micphone.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_play_pause.xml b/app/src/main/res/drawable/selector_play_pause.xml new file mode 100644 index 0000000..f34d5ac --- /dev/null +++ b/app/src/main/res/drawable/selector_play_pause.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_et_stoke_8.xml b/app/src/main/res/drawable/shape_et_stoke_8.xml new file mode 100644 index 0000000..1557e76 --- /dev/null +++ b/app/src/main/res/drawable/shape_et_stoke_8.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_rect_10.xml b/app/src/main/res/drawable/shape_rect_10.xml new file mode 100644 index 0000000..629af86 --- /dev/null +++ b/app/src/main/res/drawable/shape_rect_10.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_rect_10_btn.xml b/app/src/main/res/drawable/shape_rect_10_btn.xml new file mode 100644 index 0000000..eb30487 --- /dev/null +++ b/app/src/main/res/drawable/shape_rect_10_btn.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_rect_12.xml b/app/src/main/res/drawable/shape_rect_12.xml new file mode 100644 index 0000000..939468e --- /dev/null +++ b/app/src/main/res/drawable/shape_rect_12.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_rect_stoke_12.xml b/app/src/main/res/drawable/shape_rect_stoke_12.xml new file mode 100644 index 0000000..8849dd0 --- /dev/null +++ b/app/src/main/res/drawable/shape_rect_stoke_12.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml new file mode 100644 index 0000000..1ae95c2 --- /dev/null +++ b/app/src/main/res/layout/activity_home.xml @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_import.xml b/app/src/main/res/layout/activity_import.xml new file mode 100644 index 0000000..7562e82 --- /dev/null +++ b/app/src/main/res/layout/activity_import.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_like.xml b/app/src/main/res/layout/activity_like.xml new file mode 100644 index 0000000..1151408 --- /dev/null +++ b/app/src/main/res/layout/activity_like.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_list.xml b/app/src/main/res/layout/activity_list.xml new file mode 100644 index 0000000..88e952e --- /dev/null +++ b/app/src/main/res/layout/activity_list.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_play.xml b/app/src/main/res/layout/activity_play.xml new file mode 100644 index 0000000..8d20640 --- /dev/null +++ b/app/src/main/res/layout/activity_play.xml @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_recorder.xml b/app/src/main/res/layout/activity_recorder.xml new file mode 100644 index 0000000..3251c33 --- /dev/null +++ b/app/src/main/res/layout/activity_recorder.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_save.xml b/app/src/main/res/layout/activity_save.xml new file mode 100644 index 0000000..aaf41e1 --- /dev/null +++ b/app/src/main/res/layout/activity_save.xml @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_wel.xml b/app/src/main/res/layout/activity_wel.xml new file mode 100644 index 0000000..0b70c15 --- /dev/null +++ b/app/src/main/res/layout/activity_wel.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/dialog_timer.xml b/app/src/main/res/layout/dialog_timer.xml new file mode 100644 index 0000000..824ce4b --- /dev/null +++ b/app/src/main/res/layout/dialog_timer.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_home.xml b/app/src/main/res/layout/item_home.xml new file mode 100644 index 0000000..fbbc949 --- /dev/null +++ b/app/src/main/res/layout/item_home.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_like.xml b/app/src/main/res/layout/item_like.xml new file mode 100644 index 0000000..fc9015b --- /dev/null +++ b/app/src/main/res/layout/item_like.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_list.xml b/app/src/main/res/layout/item_list.xml new file mode 100644 index 0000000..60948c4 --- /dev/null +++ b/app/src/main/res/layout/item_list.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000..c209e78 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000..b2dfe3d Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000..4f0f1d6 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000..62b611d Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000..948a307 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..1b9a695 Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000..28d4b77 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..9287f50 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000..aa7d642 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..9126ae3 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/icon.png b/app/src/main/res/mipmap-xxxhdpi/icon.png new file mode 100644 index 0000000..92a38b1 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/icon.png differ diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml new file mode 100644 index 0000000..3e55230 --- /dev/null +++ b/app/src/main/res/values/attrs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..4d40118 --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,27 @@ + + + + #FF000000 + #FFFFFFFF + #80000000 + + #2C2C2C + + #E6CBCCCC + #CECECE + + #D6242A + #cccccc + #EFA73D + #F4DB8D + + + #86e5fe + + + #00BC81 + #FFE21E + #8492DF + #FA4472 + #007FC1 + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..dcb2c2a --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,25 @@ + + The Prank App + There is no sound in the favorites + Play a Prank + Countdown to Prank + off + 15 sec + 30 sec + 1 min + 5 min + Recording + Favorite + + Please enter the content + Successfully save + Permission denied. Cannot access audio files. + Give your created sound a name + Save Sound + Recording Audio + Save + 00 : 00 : 00 + An audio with the same name already exists! + Import Audio + More Pranks + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..fcacf20 --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/test/java/com/prank/funny/audio/sounds/ExampleUnitTest.kt b/app/src/test/java/com/prank/funny/audio/sounds/ExampleUnitTest.kt new file mode 100644 index 0000000..c1b41a5 --- /dev/null +++ b/app/src/test/java/com/prank/funny/audio/sounds/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package com.prank.funny.audio.sounds + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit sounds, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 0000000..0f3fea3 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,21 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +plugins { + id("com.android.application") version "8.6.0" apply false + id("org.jetbrains.kotlin.android") version "2.0.0" apply false +} + +buildscript { +// ext.objectboxVersion = "4.0.0" // For Groovy build scripts + val objectboxVersion by extra("4.0.0") // For KTS build scripts + + repositories { + mavenCentral() + // Note: 2.9.0 and older are available on jcenter() + } + + dependencies { + // Android Gradle Plugin 4.1.0 or later supported. +// classpath("com.android.tools.build:gradle:8.1.0") + classpath("io.objectbox:objectbox-gradle-plugin:$objectboxVersion") + } +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..3c5031e --- /dev/null +++ b/gradle.properties @@ -0,0 +1,23 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# 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 +# 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 +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official +# Enables namespacing of each library's R class so that its R class includes only the +# resources declared in the library itself and none from the library's dependencies, +# thereby reducing the size of the R class for that library +android.nonTransitiveRClass=true \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..e708b1c Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..6f77136 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Thu Jul 03 15:02:05 CST 2025 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..4f906e0 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..53bb526 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,20 @@ +pluginManagement { + repositories { + google() + mavenCentral() + gradlePluginPortal() + + + } +} +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + } +} + +rootProject.name = "The Prank App" +include(":app") + \ No newline at end of file