commit 089b5941534f8f2958f0f40fd5f792b09857bd3f Author: litingting Date: Mon Apr 21 17:27:16 2025 +0800 V1.0.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/PrankParty.jks b/app/PrankParty.jks new file mode 100644 index 0000000..7db2b82 Binary files /dev/null and b/app/PrankParty.jks differ diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 0000000..f30d136 --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,67 @@ +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.app.sounds.prank.party" + compileSdk = 34 + + defaultConfig { + //com.app.sounds.prank.party + applicationId = "com.app.sounds.prank.party" + minSdk = 23 + targetSdk = 34 + versionCode = 1 + versionName = "1.0.0" + setProperty("archivesBaseName", "Prank Party_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 { + compose = true + viewBinding = true + } + composeOptions { + kotlinCompilerExtensionVersion = "1.4.3" + } + 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..8ccaa8d --- /dev/null +++ b/app/keystore.properties @@ -0,0 +1,6 @@ +app_name=Prank Party +package_name=com.app.sounds.prank.party +keystoreFile=app/PrankParty.jks +key_alias=PrankPartykey0 +key_store_password=PrankParty +key_password=PrankParty \ 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..58b33d7 --- /dev/null +++ b/app/objectbox-models/default.json @@ -0,0 +1,143 @@ +{ + "_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": "9:8739827070759887179", + "lastPropertyId": "7:7559103671740386544", + "name": "Info", + "properties": [ + { + "id": "1:6461488128394318327", + "name": "id", + "type": 6, + "flags": 1 + }, + { + "id": "2:1026277688866110674", + "name": "name", + "type": 9 + }, + { + "id": "3:2521498030617118564", + "name": "covert", + "type": 9 + }, + { + "id": "4:2583438008647218971", + "name": "audioUrl", + "type": 9 + }, + { + "id": "5:731259648768476447", + "name": "isLike", + "type": 1 + }, + { + "id": "6:5851268731306509989", + "name": "isCustomization", + "type": 1 + }, + { + "id": "7:7559103671740386544", + "name": "colorIndex", + "type": 5 + } + ], + "relations": [] + }, + { + "id": "10:8085616393527895261", + "lastPropertyId": "3:5188652570119820578", + "name": "MyBean", + "properties": [ + { + "id": "1:146773896596794310", + "name": "id", + "type": 6, + "flags": 1 + }, + { + "id": "2:5478293265216175724", + "name": "name", + "type": 9 + }, + { + "id": "3:5188652570119820578", + "name": "covert", + "type": 9 + } + ], + "relations": [ + { + "id": "7:3875887204039397939", + "name": "infoList", + "targetId": "9:8739827070759887179" + } + ] + } + ], + "lastEntityId": "10:8085616393527895261", + "lastIndexId": "0:0", + "lastRelationId": "7:3875887204039397939", + "lastSequenceId": "0:0", + "modelVersion": 5, + "modelVersionParserMinimum": 5, + "retiredEntityUids": [ + 6644187494744704837, + 5451755925324613900, + 5341528467384834198, + 8669262289368091330, + 8810616757821398748, + 6372494608185382462, + 260548638537148495, + 6171058126503557976 + ], + "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 + ], + "retiredRelationUids": [ + 4497042841980461487, + 5723529287069432111, + 8439944504818566677, + 6781268415547019296, + 2600628166471439351, + 6610744321567014290 + ], + "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..b778d28 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ 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..7d15c74 Binary files /dev/null and b/app/src/main/assets/prankfont.ttf differ diff --git a/app/src/main/java/com/app/sounds/prank/party/PartyApp.java b/app/src/main/java/com/app/sounds/prank/party/PartyApp.java new file mode 100644 index 0000000..3a82934 --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/PartyApp.java @@ -0,0 +1,48 @@ +package com.app.sounds.prank.party; + +import android.app.Application; +import android.content.res.AssetManager; +import android.graphics.Typeface; + +import com.app.sounds.prank.party.bean.Info; + +import com.app.sounds.prank.party.bean.MyBean; +import com.app.sounds.prank.party.common.Db; +import com.app.sounds.prank.party.common.Utils; + +import java.io.IOException; +import java.io.InputStream; +import java.util.List; + +public class PartyApp extends Application { + + public static PartyApp 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"); + Db.init(this); + if (bean != null) + return; + try { + InputStream open = getAssets().open("prank.json"); + String string = Utils.getString(open); + if (!string.isEmpty()) { + bean = Utils.getBean(string); + for (MyBean category:bean){ + for (Info info1 : category.getInfoList()) { + info1.setLike(false); + Db.getBoxBean().put(info1); + } + } + } + } catch (IOException e) { + throw new RuntimeException(e); + } + } +} diff --git a/app/src/main/java/com/app/sounds/prank/party/act/InfoActivity.java b/app/src/main/java/com/app/sounds/prank/party/act/InfoActivity.java new file mode 100644 index 0000000..23582cd --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/act/InfoActivity.java @@ -0,0 +1,61 @@ +package com.app.sounds.prank.party.act; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.GridLayoutManager; + +import com.app.sounds.prank.party.bean.Info; +import com.app.sounds.prank.party.bean.MyBean; +import com.app.sounds.prank.party.common.Utils; +import com.app.sounds.prank.party.common.ItemSpace; +import com.app.sounds.prank.party.databinding.InfoActivityBinding; +import com.app.sounds.prank.party.list.AdaInfo; +import com.app.sounds.prank.party.mylistener.ClickPrankListener; + +public class InfoActivity extends AppCompatActivity implements View.OnClickListener, ClickPrankListener { + + private InfoActivityBinding activityListBinding; + private MyBean data; + private int colorIndex; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Utils.setStatusBarTextColor(this,true); + activityListBinding = InfoActivityBinding.inflate(getLayoutInflater()); + setContentView(activityListBinding.getRoot()); + data = (MyBean) getIntent().getSerializableExtra(Utils.KEY_LIST_DATA); + colorIndex = getIntent().getIntExtra(Utils.KEY_LIST_COLOR_POS,0); + activityListBinding.categoryName.setText(data.getName()); + onList(); + activityListBinding.back.setOnClickListener(this); + } + + private void onList() { + ItemSpace itemHelper = new ItemSpace(10, 10, 0); + activityListBinding.listRecycler.addItemDecoration(itemHelper); + activityListBinding.listRecycler.setLayoutManager(new GridLayoutManager(this, 3)); + AdaInfo adaInfo = new AdaInfo(this, data.getInfoList(),0,this); + activityListBinding.listRecycler.setAdapter(adaInfo); + adaInfo.setColorIndex(colorIndex); + } + + @Override + public void onClick(View v) { + if(v.equals(activityListBinding.back)){ + finish(); + } + + } + + @Override + public void onClickSoundsListener(Info data) { + Intent intent = new Intent(this, PlayActivity.class); + intent.putExtra(Utils.KEY_PLAY_DATA, data); + intent.putExtra(Utils.KEY_LIST_COLOR_POS, colorIndex); + startActivity(intent); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/app/sounds/prank/party/act/LikeFragment.java b/app/src/main/java/com/app/sounds/prank/party/act/LikeFragment.java new file mode 100644 index 0000000..ff3bedd --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/act/LikeFragment.java @@ -0,0 +1,79 @@ +package com.app.sounds.prank.party.act; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.app.sounds.prank.party.bean.Info; +import com.app.sounds.prank.party.common.Db; +import com.app.sounds.prank.party.common.ItemSpace; +import com.app.sounds.prank.party.databinding.LikeFragmentBinding; +import com.app.sounds.prank.party.list.AdaLike; + +import java.util.List; + + +public class LikeFragment extends Fragment { + + private AdaLike adapter; + + public LikeFragment() { + } + + @SuppressWarnings("unused") + public static LikeFragment newInstance() { + LikeFragment fragment = new LikeFragment(); + Bundle args = new Bundle(); +// args.putInt(ARG_COLUMN_COUNT, columnCount); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + private LikeFragmentBinding collectBinding; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + collectBinding = LikeFragmentBinding.inflate(getLayoutInflater()); + RecyclerView recyclerView = collectBinding.list; + recyclerView.setLayoutManager(new GridLayoutManager(requireContext(), 2)); + List all = Db.getAllLike(); + if(all.size()==0){ + collectBinding.layoutEmpty.setVisibility(View.VISIBLE); + collectBinding.list.setVisibility(View.GONE); + }else { + collectBinding.layoutEmpty.setVisibility(View.GONE); + collectBinding.list.setVisibility(View.VISIBLE); + } + adapter = new AdaLike(requireContext(), all,false); + ItemSpace itemHelper = new ItemSpace(10, 10, 5); + recyclerView.addItemDecoration(itemHelper); + recyclerView.setAdapter(adapter); + + return collectBinding.getRoot(); + } + + public void refresh() { + if (adapter != null) { + List all = Db.getAllLike(); + if(all.size()==0){ + collectBinding.layoutEmpty.setVisibility(View.VISIBLE); + collectBinding.list.setVisibility(View.GONE); + }else { + collectBinding.layoutEmpty.setVisibility(View.GONE); + collectBinding.list.setVisibility(View.VISIBLE); + } + adapter.updateData(all); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/app/sounds/prank/party/act/MainActivity.java b/app/src/main/java/com/app/sounds/prank/party/act/MainActivity.java new file mode 100644 index 0000000..daf8a2d --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/act/MainActivity.java @@ -0,0 +1,208 @@ +package com.app.sounds.prank.party.act; + + +import android.content.Intent; +import android.content.pm.PackageManager; +import android.net.Uri; +import android.os.Bundle; +import android.view.View; +import android.widget.Toast; + +import androidx.activity.result.ActivityResultCallback; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; +import androidx.viewpager2.adapter.FragmentStateAdapter; +import androidx.viewpager2.widget.ViewPager2; + +import com.app.sounds.prank.party.R; +import com.app.sounds.prank.party.common.Utils; +import com.app.sounds.prank.party.databinding.MainActivityBinding; + +import java.util.ArrayList; +import java.util.List; + +public class MainActivity extends AppCompatActivity implements View.OnClickListener { + + private MainActivityBinding activityMainBinding; + + private List fragmentList = new ArrayList<>(); + private LikeFragment likeFragment; + private RecorderFragment fragmentRecorder; + private ActivityResultLauncher audioPickerLauncher; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + activityMainBinding = MainActivityBinding.inflate(getLayoutInflater()); + setContentView(activityMainBinding.getRoot()); + Utils.setStatusBarTextColor(this, true); + initVp2(); + activityMainBinding.frameHome.setOnClickListener(this); + activityMainBinding.frameAdd.setOnClickListener(this); + activityMainBinding.frameCollect.setOnClickListener(this); + audioPickerLauncher = registerForActivityResult(new ActivityResultContracts.GetContent(), + new ActivityResultCallback() { + @Override + public void onActivityResult(Uri uri) { + // Handle the returned Uri + if (uri != null) { + long duration = Utils.getAudioDuration(MainActivity.this, uri); + Intent intent = new Intent(MainActivity.this, SaveActivity.class); + intent.putExtra(SaveActivity.KEY_Path, uri.toString()); + intent.putExtra(SaveActivity.KEY_Time, duration); + startActivity(intent); + } + } + }); + +// audioPickerLauncher = registerForActivityResult( +// new ActivityResultContracts.StartActivityForResult(), +// result -> { +// if (result.getResultCode() == Activity.RESULT_OK && result.getData() != null) { +// Intent data = result.getData(); +// Uri selectedAudioUri = data.getData(); +// if (selectedAudioUri != null) { +// long duration = CommonUtils.getAudioDuration(MainActivity.this, selectedAudioUri); +// Intent intent = new Intent(MainActivity.this, SaveActivity.class); +// intent.putExtra(SaveActivity.KEY_Path, selectedAudioUri.toString()); +// intent.putExtra(SaveActivity.KEY_Time, duration); +// startActivity(intent); +// } +// +// } +// } +// ); + } + + private void initVp2() { + likeFragment = LikeFragment.newInstance(); + fragmentRecorder = RecorderFragment.newInstance(); + + fragmentList.add(MainFragment.newInstance()); + fragmentList.add(fragmentRecorder); + fragmentList.add(likeFragment); + activityMainBinding.vp2.setAdapter(new FragmentStateAdapter(this) { + @NonNull + @Override + public Fragment createFragment(int position) { + return fragmentList.get(position); + } + + @Override + public int getItemCount() { + return fragmentList.size(); + } + }); + + activityMainBinding.vp2.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL); + activityMainBinding.vp2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() { + @Override + public void onPageSelected(int position) { + super.onPageSelected(position); + setCurSelectTab(position); + } + }); + + } + + + @Override + protected void onResume() { + super.onResume(); + int currentItem = activityMainBinding.vp2.getCurrentItem(); + if (currentItem == 1) { + fragmentRecorder.refresh(); + } else if (currentItem == 2) { + likeFragment.refresh(); + } + + } + + private void setCurSelectTab(int position) { + if (position == 0) { + activityMainBinding.frameHome.setSelected(true); + activityMainBinding.frameAdd.setSelected(false); + activityMainBinding.frameCollect.setSelected(false); + activityMainBinding.imHome.setSelected(true); + activityMainBinding.imAdd.setSelected(false); + activityMainBinding.imCollect.setSelected(false); +// activityMainBinding.imImport.setVisibility(View.GONE); + } else if (position == 1) { + activityMainBinding.frameHome.setSelected(false); + activityMainBinding.frameAdd.setSelected(true); + activityMainBinding.frameCollect.setSelected(false); + + activityMainBinding.imHome.setSelected(false); + activityMainBinding.imAdd.setSelected(true); + activityMainBinding.imCollect.setSelected(false); +// activityMainBinding.imImport.setVisibility(View.VISIBLE); + fragmentRecorder.refresh(); + } else { + activityMainBinding.frameHome.setSelected(false); + activityMainBinding.frameAdd.setSelected(false); + activityMainBinding.frameCollect.setSelected(true); + + activityMainBinding.imHome.setSelected(false); + activityMainBinding.imAdd.setSelected(false); + activityMainBinding.imCollect.setSelected(true); +// activityMainBinding.imImport.setVisibility(View.GONE); + likeFragment.refresh(); + } + + } + + + @Override + public void onClick(View v) { + if (v.equals(activityMainBinding.frameHome)) { + activityMainBinding.vp2.setCurrentItem(0); + } else if (v.equals(activityMainBinding.frameAdd)) { + activityMainBinding.vp2.setCurrentItem(1); + } else if (v.equals(activityMainBinding.frameCollect)) { + activityMainBinding.vp2.setCurrentItem(2); + } +// else if (v.equals(activityMainBinding.imImport)) { +// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { +// if (ContextCompat.checkSelfPermission(this, ConstValues.permission_read_audio[0]) +// != PackageManager.PERMISSION_GRANTED) { +// ActivityCompat.requestPermissions(this, ConstValues.permission_read_audio, +// ConstValues.REQUEST_READ_STORAGE_PERMISSION); +// } 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) { +// +// ActivityCompat.requestPermissions(this, ConstValues.permission_store, ConstValues.REQUEST_READ_STORAGE_PERMISSION); +// } else { +// importAudio(); +// } +// } +// } + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + if (requestCode == Utils.REQUEST_READ_STORAGE_PERMISSION) { + if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + importAudio(); + } else { + Toast.makeText(this, getString(R.string.permission_fail), Toast.LENGTH_SHORT).show(); + } + } + } + + private void importAudio() { + Intent intent = new Intent(Intent.ACTION_GET_CONTENT); + intent.setType("audio/*"); + audioPickerLauncher.launch("audio/*"); + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/app/sounds/prank/party/act/MainFragment.java b/app/src/main/java/com/app/sounds/prank/party/act/MainFragment.java new file mode 100644 index 0000000..584f2f5 --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/act/MainFragment.java @@ -0,0 +1,73 @@ +package com.app.sounds.prank.party.act; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.GridLayoutManager; + +import com.app.sounds.prank.party.PartyApp; +import com.app.sounds.prank.party.bean.Info; +import com.app.sounds.prank.party.bean.MyBean; +import com.app.sounds.prank.party.common.ItemSpace; +import com.app.sounds.prank.party.databinding.HomeFragmentBinding; +import com.app.sounds.prank.party.list.AdaMain; + +import java.util.ArrayList; +import java.util.List; + + +public class MainFragment extends Fragment { + + + private HomeFragmentBinding binding; + + private List list; + private boolean first = true; + + public MainFragment() { + } + + @SuppressWarnings("unused") + public static MainFragment newInstance() { + MainFragment fragment = new MainFragment(); + Bundle args = new Bundle(); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + binding = HomeFragmentBinding.inflate(inflater); + + ItemSpace itemHelper = new ItemSpace(10, 10, 10); + binding.recyclerView.addItemDecoration(itemHelper); + binding.recyclerView.setLayoutManager(new GridLayoutManager(requireContext(), 2)); + binding.recyclerView.setAdapter(new AdaMain(requireContext(), PartyApp.bean)); + initAudioData(); + + + return binding.getRoot(); + } + + private void initAudioData() { + list = new ArrayList<>(); + for (MyBean category : PartyApp.bean) { + list.addAll(category.getInfoList()); + } + initAudio(); + } + + private void initAudio() { + + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/app/sounds/prank/party/act/PlayActivity.java b/app/src/main/java/com/app/sounds/prank/party/act/PlayActivity.java new file mode 100644 index 0000000..c5cecc8 --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/act/PlayActivity.java @@ -0,0 +1,232 @@ +package com.app.sounds.prank.party.act; + +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.view.View; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.app.sounds.prank.party.R; +import com.app.sounds.prank.party.bean.Info; +import com.app.sounds.prank.party.common.Utils; +import com.app.sounds.prank.party.common.Db; +import com.app.sounds.prank.party.common.ItemSpace; +import com.app.sounds.prank.party.databinding.PlayActivityBinding; +import com.app.sounds.prank.party.list.AdaInfo; +import com.app.sounds.prank.party.mylistener.ClickPrankListener; +import com.app.sounds.prank.party.mylistener.OnTimerListener; +import com.bumptech.glide.Glide; + +import java.io.IOException; +import java.util.List; + +public class PlayActivity extends AppCompatActivity implements View.OnClickListener, OnTimerListener, ClickPrankListener { + + private PlayActivityBinding playBinding; + + private Info info; + private PopupTimer popupTimer; + + private MediaPlayer mediaPlayer; + private BroadcastReceiver volumeReceiver; + private CountDownTimer countDownTimer; + private int color; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + playBinding = PlayActivityBinding.inflate(getLayoutInflater()); + setContentView(playBinding.getRoot()); + Utils.setStatusBarTextColor(this, true); + info = (Info) getIntent().getSerializableExtra(Utils.KEY_PLAY_DATA); + color = getIntent().getIntExtra(Utils.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.default_sounds) + .into(playBinding.image); + } else { + Glide.with(this).load(R.drawable.default_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); + Utils.setVolume(this, playBinding.seekbar); + + 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() { + popupTimer.setOffSelected(); + if (!mediaPlayer.isPlaying()) { + playBinding.btnPlay.setSelected(true); + mediaPlayer.start(); + } + } + }; + 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() { + boolean b = Db.checkLike(info); + playBinding.imLike.setSelected(b); + } + private void loadMore() { + List more = Db.getMore(); + ItemSpace itemHelper = new ItemSpace(0, 0, (int) Utils.dpToPx(3)); + AdaInfo adaInfo = new AdaInfo(this, more, 1, this); + playBinding.moreRecycler.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)); + playBinding.moreRecycler.setAdapter(adaInfo); + playBinding.moreRecycler.addItemDecoration(itemHelper); + adaInfo.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.btnPlay.setSelected(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()) { + mediaPlayer.pause(); + } + } else { + if (!mediaPlayer.isPlaying()) { + mediaPlayer.start(); + } + } + 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); + Db.addLike(info); + } else { + Db.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 (popupTimer == null) { + popupTimer = new PopupTimer(PlayActivity.this, this); + } + popupTimer.showTop(playBinding.imTimer); + } + + } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (mediaPlayer.isPlaying()) { + mediaPlayer.stop(); + } + mediaPlayer.release(); + mediaPlayer = null; + stopCountDown(); + } + + @Override + public void onClickTimerListener(long time) { + popupTimer.hide(); + if (time == -1) { + stopCountDown(); + } else { + startCountDown(time); + } + + } + + @Override + public void onClickSoundsListener(Info data) { + Intent intent = new Intent(this, PlayActivity.class); + intent.putExtra(Utils.KEY_PLAY_DATA, data); + startActivity(intent); + finish(); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/app/sounds/prank/party/act/PopupTimer.java b/app/src/main/java/com/app/sounds/prank/party/act/PopupTimer.java new file mode 100644 index 0000000..bb6c403 --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/act/PopupTimer.java @@ -0,0 +1,104 @@ +package com.app.sounds.prank.party.act; + +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.app.sounds.prank.party.common.MyTextView; +import com.app.sounds.prank.party.databinding.TimerDialogBinding; +import com.app.sounds.prank.party.mylistener.OnTimerListener; + +public class PopupTimer implements View.OnClickListener { + private TimerDialogBinding binding; + private PopupWindow popupWindow; + private OnTimerListener mListener; + + public PopupTimer(Activity context, OnTimerListener listener) { + mListener = listener; + binding = TimerDialogBinding.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(MyTextView tv) { + int childCount = binding.layoutTime.getChildCount(); + for (int i = 0; i < childCount; i++) { + View child = binding.layoutTime.getChildAt(i); + if (child instanceof MyTextView) { + MyTextView tvTimer = (MyTextView) 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 MyTextView) { + MyTextView v1 = (MyTextView) 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/app/sounds/prank/party/act/RecorderActivity.java b/app/src/main/java/com/app/sounds/prank/party/act/RecorderActivity.java new file mode 100644 index 0000000..23ea049 --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/act/RecorderActivity.java @@ -0,0 +1,88 @@ +package com.app.sounds.prank.party.act; + +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.app.sounds.prank.party.R; +import com.app.sounds.prank.party.common.Utils; +import com.app.sounds.prank.party.common.Manager; +import com.app.sounds.prank.party.databinding.RecordActivityBinding; + +public class RecorderActivity extends AppCompatActivity { + private RecordActivityBinding binding; + private long startTime; + private long elapsedTime; + private Handler handler = new Handler(); + private Runnable runnable; + private boolean isCreate = false; + + private Manager manager; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + binding = RecordActivityBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + Utils.setStatusBarTextColor(this, true); + manager = new Manager(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) { + manager.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 { + manager.stopRecording(); + + handler.removeCallbacks(runnable); + Intent intent = new Intent(RecorderActivity.this, SaveActivity.class); + intent.putExtra(SaveActivity.KEY_Time, elapsedTime); + intent.putExtra(SaveActivity.KEY_Path, manager.getTempFileName()); + intent.putExtra(SaveActivity.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/app/sounds/prank/party/act/RecorderFragment.java b/app/src/main/java/com/app/sounds/prank/party/act/RecorderFragment.java new file mode 100644 index 0000000..5308643 --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/act/RecorderFragment.java @@ -0,0 +1,213 @@ +package com.app.sounds.prank.party.act; + +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.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Toast; + +import androidx.activity.result.ActivityResultCallback; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.GridLayoutManager; + +import com.app.sounds.prank.party.bean.Info; +import com.app.sounds.prank.party.common.Utils; +import com.app.sounds.prank.party.common.Db; +import com.app.sounds.prank.party.common.ItemSpace; +import com.app.sounds.prank.party.databinding.RecorderFragmentBinding; +import com.app.sounds.prank.party.list.AdaLike; +import com.app.sounds.prank.party.mylistener.OnRecordListener; + +import java.util.List; +import java.util.Map; + + +public class RecorderFragment extends Fragment implements View.OnClickListener , OnRecordListener { + + private RecorderFragmentBinding binding; + private AdaLike adapter; + private ActivityResultLauncher requestRecordAudioLauncher; + private ActivityResultLauncher audioPickerLauncher; + private ActivityResultLauncher requestStorePermissionsLauncher; + + public RecorderFragment() { + + } + + public static RecorderFragment newInstance() { + RecorderFragment fragment = new RecorderFragment(); + Bundle args = new Bundle(); + + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + requestRecordAudioLauncher = registerForActivityResult( + new ActivityResultContracts.RequestPermission(), + isGranted -> { + if (isGranted) { + intentRecordAudio(); + } else { + Toast.makeText(requireContext(), "Recording permission denied", Toast.LENGTH_SHORT).show(); + } + } + ); + + requestStorePermissionsLauncher = registerForActivityResult( + new ActivityResultContracts.RequestMultiplePermissions(), + new ActivityResultCallback>() { + @Override + public void onActivityResult(Map result) { + Boolean isGranted = true; + for (Map.Entry entry : result.entrySet()) { + String permission = entry.getKey(); + isGranted = entry.getValue(); + if(!entry.getValue()){ + isGranted = false; + } + + } + if (isGranted) { + importAudio(); + }else { + Toast.makeText(requireContext(), " 权限被拒绝", Toast.LENGTH_SHORT).show(); + } + } + } + ); + audioPickerLauncher = registerForActivityResult(new ActivityResultContracts.GetContent(), + new ActivityResultCallback() { + @Override + public void onActivityResult(Uri uri) { + // Handle the returned Uri + + if (uri != null) { + long duration = Utils.getAudioDuration(requireContext(), uri); + Intent intent = new Intent(requireContext(), SaveActivity.class); + intent.putExtra(SaveActivity.KEY_Path, uri.toString()); + intent.putExtra(SaveActivity.KEY_Time, duration); + startActivity(intent); + } + } + }); + + + } + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + binding = RecorderFragmentBinding.inflate(getLayoutInflater()); + + + ItemSpace itemHelper = new ItemSpace(10, 10, 5); + binding.recyclerImport.addItemDecoration(itemHelper); + binding.recyclerImport.setLayoutManager(new GridLayoutManager(requireContext(), 2)); + List all = Db.getAllCustomization(); +// updateUi(all); + adapter = new AdaLike(requireContext(), all,true); + binding.recyclerImport.setAdapter(adapter); + binding.btnimport.setOnClickListener(this); + binding.record.setOnClickListener(this); + + return binding.getRoot(); + } + + + + + + public void refresh() { + if (adapter != null) { + List all = Db.getAllCustomization(); +// updateUi(all); + adapter.updateData(all); + } + + } + +// private void updateUi(List all) { +// if (all.size() == 0) { +// binding.noImportHint.setVisibility(View.VISIBLE); +// binding.recyclerImport.setVisibility(View.GONE); +// } else { +// binding.noImportHint.setVisibility(View.GONE); +// binding.recyclerImport.setVisibility(View.VISIBLE); +// } +// } + + private void checkAndRequestAudioPermission() { + if (ContextCompat.checkSelfPermission(requireContext(), Utils.permission_record_audio) + != PackageManager.PERMISSION_GRANTED) { + requestRecordAudioLauncher.launch(Utils.permission_record_audio); + } else { + intentRecordAudio(); + } + } + + private void intentRecordAudio() { + Intent intent = new Intent(requireContext(), RecorderActivity.class); + startActivity(intent); + } + + @Override + public void onClick(View v) { + if(v.equals(binding.btnimport)){ + onClickTimerListener(0); + }else if(v.equals(binding.record)){ + onClickTimerListener(1); + } + } + + + + private void importAudio() { + Intent intent = new Intent(Intent.ACTION_GET_CONTENT); + intent.setType("audio/*"); + audioPickerLauncher.launch("audio/*"); + + } + + + + public void onClickTimerListener(int type) { + switch (type){ + case 0: + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + if (ContextCompat.checkSelfPermission(requireContext(), Utils.permission_read_audio[0]) + != PackageManager.PERMISSION_GRANTED) { + requestStorePermissionsLauncher.launch(Utils.permission_read_audio); +// ActivityCompat.requestPermissions(requireActivity(), ConstValues.permission_read_audio, +// ConstValues.REQUEST_READ_STORAGE_PERMISSION); + } else { + importAudio(); + } + } else { + if (ContextCompat.checkSelfPermission(requireContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) + != PackageManager.PERMISSION_GRANTED || + ContextCompat.checkSelfPermission(requireContext(), Manifest.permission.READ_EXTERNAL_STORAGE) + != PackageManager.PERMISSION_GRANTED) { + requestStorePermissionsLauncher.launch(Utils.permission_store); +// ActivityCompat.requestPermissions(requireActivity(), ConstValues.permission_store, ConstValues.REQUEST_READ_STORAGE_PERMISSION); + } else { + importAudio(); + } + } + break; + case 1: + checkAndRequestAudioPermission(); + break; + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/app/sounds/prank/party/act/SaveActivity.java b/app/src/main/java/com/app/sounds/prank/party/act/SaveActivity.java new file mode 100644 index 0000000..ed15698 --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/act/SaveActivity.java @@ -0,0 +1,217 @@ +package com.app.sounds.prank.party.act; + +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.app.sounds.prank.party.R; +import com.app.sounds.prank.party.bean.Info; +import com.app.sounds.prank.party.common.Utils; +import com.app.sounds.prank.party.common.Db; +import com.app.sounds.prank.party.databinding.SaveActivityBinding; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; + +public class SaveActivity extends AppCompatActivity { + private SaveActivityBinding binding; + 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"; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + binding = SaveActivityBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + + Utils.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 = Db.checkName(name); + if (!TextUtils.isEmpty(name)) { + if(!b){ + binding.saveEdit.setText(""); + Toast.makeText(SaveActivity.this, getString(R.string.name_hint), Toast.LENGTH_SHORT).show(); + return; + } + saveData(name); + Toast.makeText(SaveActivity.this, getString(R.string.save_tips), Toast.LENGTH_SHORT).show(); + finish(); + } else { + Toast.makeText(SaveActivity.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)) { + Info mydata = new Info(); + mydata.setLike(false); + mydata.setName(name); + mydata.setCustomization(true); + mydata.setAudioUrl(destinationFile.getAbsolutePath()); + Db.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/app/sounds/prank/party/act/WelcomeActivity.java b/app/src/main/java/com/app/sounds/prank/party/act/WelcomeActivity.java new file mode 100644 index 0000000..77d8282 --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/act/WelcomeActivity.java @@ -0,0 +1,55 @@ +package com.app.sounds.prank.party.act; + +import android.content.Intent; +import android.os.Bundle; +import android.os.CountDownTimer; + +import androidx.appcompat.app.AppCompatActivity; + +import com.app.sounds.prank.party.common.Utils; +import com.app.sounds.prank.party.databinding.WelcomeActivityBinding; + +public class WelcomeActivity extends AppCompatActivity { + + private long time = 1000; + private WelcomeActivityBinding binding; + private CountDownTimer countDownTimer; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + binding = WelcomeActivityBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + Utils.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, MainActivity.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/app/sounds/prank/party/bean/Info.java b/app/src/main/java/com/app/sounds/prank/party/bean/Info.java new file mode 100644 index 0000000..eeacc6e --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/bean/Info.java @@ -0,0 +1,78 @@ +package com.app.sounds.prank.party.bean; + + +import java.io.Serializable; + +import io.objectbox.annotation.Entity; +import io.objectbox.annotation.Id; + +@Entity +public class Info 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/app/sounds/prank/party/bean/MyBean.java b/app/src/main/java/com/app/sounds/prank/party/bean/MyBean.java new file mode 100644 index 0000000..6d2d849 --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/bean/MyBean.java @@ -0,0 +1,50 @@ +package com.app.sounds.prank.party.bean; + +import java.io.Serializable; +import java.util.List; + +import io.objectbox.annotation.Entity; +import io.objectbox.annotation.Id; + + +@Entity +public class MyBean 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/app/sounds/prank/party/common/Db.java b/app/src/main/java/com/app/sounds/prank/party/common/Db.java new file mode 100644 index 0000000..c216e32 --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/common/Db.java @@ -0,0 +1,87 @@ +package com.app.sounds.prank.party.common; + +import android.content.Context; + +import com.app.sounds.prank.party.bean.Info; +import com.app.sounds.prank.party.bean.Info_; +import com.app.sounds.prank.party.bean.MyObjectBox; + +import java.util.Collections; +import java.util.List; + +import io.objectbox.Box; +import io.objectbox.BoxStore; +import io.objectbox.query.Query; + +public class Db { + + private static BoxStore store; + + public static void init(Context context) { + store = MyObjectBox.builder() + .androidContext(context) + .build(); + } + + public static Box getBoxBean() { + return store.boxFor(Info.class); + } + + public static List getAllLike() { + Query query = Db.getBoxBean().query(Info_.isLike.equal(true)).build(); + List data = query.find(); + query.close(); + return data; + } + + public static List getAllCustomization() { + Query query = Db.getBoxBean().query(Info_.isCustomization.equal(true)).build(); + List data = query.find(); + query.close(); + return data; + } + + + public static List getMore() { + Query query = Db.getBoxBean().query(Info_.isCustomization.equal(false)).build(); + List data = query.find(); + query.close(); + Collections.shuffle(data); + return data.subList(0, 11); + } + public static boolean checkLike(Info info) { + Query query = Db.getBoxBean().query(Info_.name.equal(info.getName())).build(); + Info data = query.findFirst(); + query.close(); + if (data != null) { + return data.isLike(); + } else { + return false; + } + + } + + public static boolean checkName(String name) { + Query query = Db.getBoxBean().query(Info_.name.equal(name)).build(); + Info data = query.findFirst(); + query.close(); + if (data != null) { + return false; + } else { + return true; + } + + } + + public static void addLike(Info info) { + info.setLike(true); + Db.getBoxBean().put(info); + } + + public static void removeLike(Info info) { + info.setLike(false); + Db.getBoxBean().put(info); + + } + +} diff --git a/app/src/main/java/com/app/sounds/prank/party/common/ItemSpace.java b/app/src/main/java/com/app/sounds/prank/party/common/ItemSpace.java new file mode 100644 index 0000000..aa4d269 --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/common/ItemSpace.java @@ -0,0 +1,76 @@ +package com.app.sounds.prank.party.common; + +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.app.sounds.prank.party.PartyApp; + + +public class ItemSpace extends RecyclerView.ItemDecoration { + + private int v, h, ex; + + public ItemSpace(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 = PartyApp.app.getResources().getDisplayMetrics().density; + return density * dpValue + 0.5f; + } +} diff --git a/app/src/main/java/com/app/sounds/prank/party/common/Manager.java b/app/src/main/java/com/app/sounds/prank/party/common/Manager.java new file mode 100644 index 0000000..27f357f --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/common/Manager.java @@ -0,0 +1,57 @@ +package com.app.sounds.prank.party.common; + +import android.content.Context; +import android.media.MediaRecorder; + +import java.io.File; +import java.io.IOException; + +public class Manager { + private MediaRecorder mediaRecorder; + private String tempFileName; + private String fileName; + private boolean isRecording = false; + + public Manager(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/app/sounds/prank/party/common/MyTextView.java b/app/src/main/java/com/app/sounds/prank/party/common/MyTextView.java new file mode 100644 index 0000000..024b24d --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/common/MyTextView.java @@ -0,0 +1,35 @@ +package com.app.sounds.prank.party.common; + + + +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; + +import androidx.annotation.Nullable; + +import com.app.sounds.prank.party.R; + + +public class MyTextView extends androidx.appcompat.widget.AppCompatTextView { + + + public MyTextView(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){ + Utils.initFont(this); + } + + typedArray.recycle(); + } + + + +} diff --git a/app/src/main/java/com/app/sounds/prank/party/common/Utils.java b/app/src/main/java/com/app/sounds/prank/party/common/Utils.java new file mode 100644 index 0000000..8f9f2f9 --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/common/Utils.java @@ -0,0 +1,173 @@ +package com.app.sounds.prank.party.common; + +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.app.sounds.prank.party.PartyApp; +import com.app.sounds.prank.party.R; +import com.app.sounds.prank.party.bean.Info; +import com.app.sounds.prank.party.bean.MyBean; + +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 Utils { + + public static int[] bgs = new int[]{R.drawable.home_background,R.drawable.home_background,R.drawable.home_background,R.drawable.home_background, + R.drawable.home_background,R.drawable.home_background}; + + public static int[] childBgs = new int[]{R.drawable.backgournd_info,R.drawable.backgournd_info,R.drawable.backgournd_info,R.drawable.backgournd_info, + R.drawable.backgournd_info,R.drawable.backgournd_info}; + + + 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 final String KEY_PLAY_COLOR_POS = "play_page_color_pos"; + + public static final int REQUEST_READ_STORAGE_PERMISSION = 5; + + + 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(PartyApp.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); + Info info = new Info(); + info.setAudioUrl(listBean.getString("mp3Url")); + info.setCovert(listBean.getString("preUrl")); + info.setName(listBean.getString("title")); + list.add(info); + } + + MyBean newBean = new MyBean(); + 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 = PartyApp.app.getResources().getDisplayMetrics().density; + return density * dpValue + 0.5f; + } + +} diff --git a/app/src/main/java/com/app/sounds/prank/party/list/AdaInfo.java b/app/src/main/java/com/app/sounds/prank/party/list/AdaInfo.java new file mode 100644 index 0000000..a42205f --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/list/AdaInfo.java @@ -0,0 +1,73 @@ +package com.app.sounds.prank.party.list; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.RelativeLayout; + +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; + +import com.app.sounds.prank.party.bean.Info; +import com.app.sounds.prank.party.common.Utils; +import com.app.sounds.prank.party.databinding.InfoItemBinding; +import com.app.sounds.prank.party.mylistener.ClickPrankListener; +import com.bumptech.glide.Glide; + +import java.util.List; +public class AdaInfo extends RecyclerView.Adapter { + private final List mValues; + private Context mCon; + private int type; + private ClickPrankListener mListener; + private int colorIndex; + public void setColorIndex(int colorIndex) { + this.colorIndex = colorIndex; + } + public AdaInfo(Context context, List items, int mType, ClickPrankListener listener) { + mValues = items; + this.mCon = context; + type = mType; + mListener = listener; + } + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + return new ViewHolder(InfoItemBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); + } + @Override + public void onBindViewHolder(final ViewHolder holder, int position) { + holder.vb.relative.setBackground(ContextCompat.getDrawable(mCon, Utils.childBgs[colorIndex])); + Info 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 InfoItemBinding vb; + public ViewHolder(InfoItemBinding binding) { + super(binding.getRoot()); + vb = binding; + ViewGroup.LayoutParams layoutParams = vb.relative.getLayoutParams(); + if(type == 0){ + layoutParams.width = RelativeLayout.LayoutParams.MATCH_PARENT; + vb.name.setMaxLines(2); + }else { + layoutParams.width = (int) Utils.dpToPx(130); + vb.name.setMaxLines(1); + } + vb.relative.setLayoutParams(layoutParams); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/app/sounds/prank/party/list/AdaLike.java b/app/src/main/java/com/app/sounds/prank/party/list/AdaLike.java new file mode 100644 index 0000000..8d4ba0f --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/list/AdaLike.java @@ -0,0 +1,121 @@ +package com.app.sounds.prank.party.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.app.sounds.prank.party.R; +import com.app.sounds.prank.party.act.PlayActivity; +import com.app.sounds.prank.party.bean.Info; +import com.app.sounds.prank.party.common.Utils; +import com.app.sounds.prank.party.common.Db; +import com.app.sounds.prank.party.databinding.LikeItemBinding; +import com.bumptech.glide.Glide; + +import java.io.File; +import java.util.List; + + +public class AdaLike extends RecyclerView.Adapter { + + private List mValues; + private Context mCOn; + private boolean showDelete = false; + + + + public AdaLike(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(LikeItemBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false)); + + + + } + + @Override + public void onBindViewHolder(final ViewHolder holder, int position) { + Info info = mValues.get(position); + holder.vb.ttvName.setText(info.getName()); + int colorIndex = info.getColorIndex(); + holder.vb.layout.setBackground(ContextCompat.getDrawable(mCOn, Utils.childBgs[colorIndex])); + if (info.isCustomization()) { + Glide.with(mCOn).load(R.drawable.default_sounds).into(holder.vb.image); + } else { + Glide.with(mCOn).load(info.getCovert()).into(holder.vb.image); + } + + 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) { + Db.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, PlayActivity.class); + intent.putExtra(Utils.KEY_PLAY_DATA, info); + intent.putExtra(Utils.KEY_LIST_COLOR_POS, colorIndex); + mCOn.startActivity(intent); + } + }); + } + + @Override + public int getItemCount() { + return mValues.size(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + + public LikeItemBinding vb; + + public ViewHolder(LikeItemBinding binding) { + super(binding.getRoot()); + vb = binding; + } + + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/app/sounds/prank/party/list/AdaMain.java b/app/src/main/java/com/app/sounds/prank/party/list/AdaMain.java new file mode 100644 index 0000000..b3d87f9 --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/list/AdaMain.java @@ -0,0 +1,80 @@ +package com.app.sounds.prank.party.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.app.sounds.prank.party.act.InfoActivity; +import com.app.sounds.prank.party.bean.MyBean; +import com.app.sounds.prank.party.common.Utils; +import com.app.sounds.prank.party.databinding.HomeItemBinding; +import com.bumptech.glide.Glide; + +import java.util.List; + + +public class AdaMain extends RecyclerView.Adapter { + + private final List mValues; + + private Context mCon; + + + public AdaMain(Context context, List items) { + mValues = items; + this.mCon = context; + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + + return new ViewHolder(HomeItemBinding .inflate(LayoutInflater.from(parent.getContext()), parent, false)); + + } + + @Override + public void onBindViewHolder(final ViewHolder holder, int position) { + int i = position % 6; + holder.vb.relative.setBackground(ContextCompat.getDrawable(mCon, Utils.bgs[i])); + MyBean myBean = mValues.get(position); + String covert = myBean.getCovert(); + Glide.with(mCon).load(covert).into(holder.vb.image); + holder.vb.name.setText(myBean.getName()); + holder.vb.relative.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(mCon, InfoActivity.class); + intent.putExtra(Utils.KEY_LIST_DATA, myBean); + intent.putExtra(Utils.KEY_LIST_COLOR_POS, i); + mCon.startActivity(intent); + } + }); + if(position == mValues.size()-1||position == mValues.size()-2){ + holder.vb.view.setVisibility(View.VISIBLE); + }else { + holder.vb.view.setVisibility(View.GONE); + } + + } + + @Override + public int getItemCount() { + return mValues.size(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + + private HomeItemBinding vb; + + public ViewHolder(HomeItemBinding binding) { + super(binding.getRoot()); + vb = binding; + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/app/sounds/prank/party/mylistener/ClickPrankListener.java b/app/src/main/java/com/app/sounds/prank/party/mylistener/ClickPrankListener.java new file mode 100644 index 0000000..7119e37 --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/mylistener/ClickPrankListener.java @@ -0,0 +1,8 @@ +package com.app.sounds.prank.party.mylistener; + +import com.app.sounds.prank.party.bean.Info; + +public interface ClickPrankListener { + + void onClickSoundsListener(Info data); +} diff --git a/app/src/main/java/com/app/sounds/prank/party/mylistener/OnRecordListener.java b/app/src/main/java/com/app/sounds/prank/party/mylistener/OnRecordListener.java new file mode 100644 index 0000000..77a7298 --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/mylistener/OnRecordListener.java @@ -0,0 +1,6 @@ +package com.app.sounds.prank.party.mylistener; + +public interface OnRecordListener { + + void onClickTimerListener(int type); +} diff --git a/app/src/main/java/com/app/sounds/prank/party/mylistener/OnTimerListener.java b/app/src/main/java/com/app/sounds/prank/party/mylistener/OnTimerListener.java new file mode 100644 index 0000000..af51014 --- /dev/null +++ b/app/src/main/java/com/app/sounds/prank/party/mylistener/OnTimerListener.java @@ -0,0 +1,6 @@ +package com.app.sounds.prank.party.mylistener; + +public interface OnTimerListener { + + void onClickTimerListener(long time); +} diff --git a/app/src/main/res/color/color_timer.xml b/app/src/main/res/color/color_timer.xml new file mode 100644 index 0000000..7681b97 --- /dev/null +++ b/app/src/main/res/color/color_timer.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/backgournd_info.xml b/app/src/main/res/drawable/backgournd_info.xml new file mode 100644 index 0000000..5117556 --- /dev/null +++ b/app/src/main/res/drawable/backgournd_info.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/background_edittext.xml b/app/src/main/res/drawable/background_edittext.xml new file mode 100644 index 0000000..2a1d794 --- /dev/null +++ b/app/src/main/res/drawable/background_edittext.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/background_timer.xml b/app/src/main/res/drawable/background_timer.xml new file mode 100644 index 0000000..629af86 --- /dev/null +++ b/app/src/main/res/drawable/background_timer.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_namee_shape.xml b/app/src/main/res/drawable/bg_namee_shape.xml new file mode 100644 index 0000000..939468e --- /dev/null +++ b/app/src/main/res/drawable/bg_namee_shape.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/default_sounds.xml b/app/src/main/res/drawable/default_sounds.xml new file mode 100644 index 0000000..9ba5a52 --- /dev/null +++ b/app/src/main/res/drawable/default_sounds.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/gray_play_like.xml b/app/src/main/res/drawable/gray_play_like.xml new file mode 100644 index 0000000..2f28770 --- /dev/null +++ b/app/src/main/res/drawable/gray_play_like.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/gray_recording.xml b/app/src/main/res/drawable/gray_recording.xml new file mode 100644 index 0000000..b83b170 --- /dev/null +++ b/app/src/main/res/drawable/gray_recording.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/app/src/main/res/drawable/home_background.xml b/app/src/main/res/drawable/home_background.xml new file mode 100644 index 0000000..2194f51 --- /dev/null +++ b/app/src/main/res/drawable/home_background.xml @@ -0,0 +1,8 @@ + + + + + diff --git a/app/src/main/res/drawable/image_back.xml b/app/src/main/res/drawable/image_back.xml new file mode 100644 index 0000000..f53206f --- /dev/null +++ b/app/src/main/res/drawable/image_back.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/image_delete.xml b/app/src/main/res/drawable/image_delete.xml new file mode 100644 index 0000000..d24154a --- /dev/null +++ b/app/src/main/res/drawable/image_delete.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/image_empty.xml b/app/src/main/res/drawable/image_empty.xml new file mode 100644 index 0000000..b1ba883 --- /dev/null +++ b/app/src/main/res/drawable/image_empty.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/image_loop_gray.xml b/app/src/main/res/drawable/image_loop_gray.xml new file mode 100644 index 0000000..8bf95ac --- /dev/null +++ b/app/src/main/res/drawable/image_loop_gray.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/image_loop_light.xml b/app/src/main/res/drawable/image_loop_light.xml new file mode 100644 index 0000000..2ddd3d4 --- /dev/null +++ b/app/src/main/res/drawable/image_loop_light.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/light_play_timer.xml b/app/src/main/res/drawable/light_play_timer.xml new file mode 100644 index 0000000..bddeb56 --- /dev/null +++ b/app/src/main/res/drawable/light_play_timer.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/light_recording.xml b/app/src/main/res/drawable/light_recording.xml new file mode 100644 index 0000000..021d017 --- /dev/null +++ b/app/src/main/res/drawable/light_recording.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/app/src/main/res/drawable/main_btn_background.xml b/app/src/main/res/drawable/main_btn_background.xml new file mode 100644 index 0000000..9b149c6 --- /dev/null +++ b/app/src/main/res/drawable/main_btn_background.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/pause.xml b/app/src/main/res/drawable/pause.xml new file mode 100644 index 0000000..c8e5730 --- /dev/null +++ b/app/src/main/res/drawable/pause.xml @@ -0,0 +1,16 @@ + + + + + diff --git a/app/src/main/res/drawable/play.xml b/app/src/main/res/drawable/play.xml new file mode 100644 index 0000000..2870e4f --- /dev/null +++ b/app/src/main/res/drawable/play.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/drawable/play_center_background.xml b/app/src/main/res/drawable/play_center_background.xml new file mode 100644 index 0000000..4e0e7ae --- /dev/null +++ b/app/src/main/res/drawable/play_center_background.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/red_play_like.xml b/app/src/main/res/drawable/red_play_like.xml new file mode 100644 index 0000000..672bb31 --- /dev/null +++ b/app/src/main/res/drawable/red_play_like.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/sel_info_favorite.xml b/app/src/main/res/drawable/sel_info_favorite.xml new file mode 100644 index 0000000..8a07704 --- /dev/null +++ b/app/src/main/res/drawable/sel_info_favorite.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sel_looper.xml b/app/src/main/res/drawable/sel_looper.xml new file mode 100644 index 0000000..2f2821e --- /dev/null +++ b/app/src/main/res/drawable/sel_looper.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sel_mic.xml b/app/src/main/res/drawable/sel_mic.xml new file mode 100644 index 0000000..33a3d24 --- /dev/null +++ b/app/src/main/res/drawable/sel_mic.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sel_play_page.xml b/app/src/main/res/drawable/sel_play_page.xml new file mode 100644 index 0000000..e725db6 --- /dev/null +++ b/app/src/main/res/drawable/sel_play_page.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sel_recording.xml b/app/src/main/res/drawable/sel_recording.xml new file mode 100644 index 0000000..1c1844c --- /dev/null +++ b/app/src/main/res/drawable/sel_recording.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sel_tab_home.xml b/app/src/main/res/drawable/sel_tab_home.xml new file mode 100644 index 0000000..17b7e3b --- /dev/null +++ b/app/src/main/res/drawable/sel_tab_home.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/sel_tab_like.xml b/app/src/main/res/drawable/sel_tab_like.xml new file mode 100644 index 0000000..ed09374 --- /dev/null +++ b/app/src/main/res/drawable/sel_tab_like.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/tab_background.xml b/app/src/main/res/drawable/tab_background.xml new file mode 100644 index 0000000..5b1f6d2 --- /dev/null +++ b/app/src/main/res/drawable/tab_background.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/tab_home_gray.xml b/app/src/main/res/drawable/tab_home_gray.xml new file mode 100644 index 0000000..47fa1d0 --- /dev/null +++ b/app/src/main/res/drawable/tab_home_gray.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/tab_home_light.xml b/app/src/main/res/drawable/tab_home_light.xml new file mode 100644 index 0000000..0e97edf --- /dev/null +++ b/app/src/main/res/drawable/tab_home_light.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/tab_like_gray.xml b/app/src/main/res/drawable/tab_like_gray.xml new file mode 100644 index 0000000..6e6622f --- /dev/null +++ b/app/src/main/res/drawable/tab_like_gray.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/tab_like_light.xml b/app/src/main/res/drawable/tab_like_light.xml new file mode 100644 index 0000000..1f1411e --- /dev/null +++ b/app/src/main/res/drawable/tab_like_light.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/tab_recorder_gray.xml b/app/src/main/res/drawable/tab_recorder_gray.xml new file mode 100644 index 0000000..81edf56 --- /dev/null +++ b/app/src/main/res/drawable/tab_recorder_gray.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/tab_recorder_light.xml b/app/src/main/res/drawable/tab_recorder_light.xml new file mode 100644 index 0000000..6ff90b3 --- /dev/null +++ b/app/src/main/res/drawable/tab_recorder_light.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/volum_sb.xml b/app/src/main/res/drawable/volum_sb.xml new file mode 100644 index 0000000..9184fb0 --- /dev/null +++ b/app/src/main/res/drawable/volum_sb.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/volum_th.xml b/app/src/main/res/drawable/volum_th.xml new file mode 100644 index 0000000..2883196 --- /dev/null +++ b/app/src/main/res/drawable/volum_th.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/volum_white.xml b/app/src/main/res/drawable/volum_white.xml new file mode 100644 index 0000000..b0f7f2b --- /dev/null +++ b/app/src/main/res/drawable/volum_white.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/welcome.xml b/app/src/main/res/drawable/welcome.xml new file mode 100644 index 0000000..659ed75 --- /dev/null +++ b/app/src/main/res/drawable/welcome.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/welcome_imag.png b/app/src/main/res/drawable/welcome_imag.png new file mode 100644 index 0000000..1628c33 Binary files /dev/null and b/app/src/main/res/drawable/welcome_imag.png differ diff --git a/app/src/main/res/drawable/welcome_name.png b/app/src/main/res/drawable/welcome_name.png new file mode 100644 index 0000000..55c2e0d Binary files /dev/null and b/app/src/main/res/drawable/welcome_name.png differ diff --git a/app/src/main/res/layout/home_fragment.xml b/app/src/main/res/layout/home_fragment.xml new file mode 100644 index 0000000..4015f12 --- /dev/null +++ b/app/src/main/res/layout/home_fragment.xml @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/app/src/main/res/layout/home_item.xml b/app/src/main/res/layout/home_item.xml new file mode 100644 index 0000000..784c7b2 --- /dev/null +++ b/app/src/main/res/layout/home_item.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/info_activity.xml b/app/src/main/res/layout/info_activity.xml new file mode 100644 index 0000000..9b1d76f --- /dev/null +++ b/app/src/main/res/layout/info_activity.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/info_item.xml b/app/src/main/res/layout/info_item.xml new file mode 100644 index 0000000..0c3fe59 --- /dev/null +++ b/app/src/main/res/layout/info_item.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + diff --git a/app/src/main/res/layout/like_fragment.xml b/app/src/main/res/layout/like_fragment.xml new file mode 100644 index 0000000..52f4956 --- /dev/null +++ b/app/src/main/res/layout/like_fragment.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/like_item.xml b/app/src/main/res/layout/like_item.xml new file mode 100644 index 0000000..e83bb30 --- /dev/null +++ b/app/src/main/res/layout/like_item.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/main_activity.xml b/app/src/main/res/layout/main_activity.xml new file mode 100644 index 0000000..155a856 --- /dev/null +++ b/app/src/main/res/layout/main_activity.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/play_activity.xml b/app/src/main/res/layout/play_activity.xml new file mode 100644 index 0000000..dc7fa58 --- /dev/null +++ b/app/src/main/res/layout/play_activity.xml @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/record_activity.xml b/app/src/main/res/layout/record_activity.xml new file mode 100644 index 0000000..f7c033c --- /dev/null +++ b/app/src/main/res/layout/record_activity.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/recorder_fragment.xml b/app/src/main/res/layout/recorder_fragment.xml new file mode 100644 index 0000000..a16448e --- /dev/null +++ b/app/src/main/res/layout/recorder_fragment.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/save_activity.xml b/app/src/main/res/layout/save_activity.xml new file mode 100644 index 0000000..b8ad5d8 --- /dev/null +++ b/app/src/main/res/layout/save_activity.xml @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/timer_dialog.xml b/app/src/main/res/layout/timer_dialog.xml new file mode 100644 index 0000000..53f669f --- /dev/null +++ b/app/src/main/res/layout/timer_dialog.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/welcome_activity.xml b/app/src/main/res/layout/welcome_activity.xml new file mode 100644 index 0000000..75d20a2 --- /dev/null +++ b/app/src/main/res/layout/welcome_activity.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + 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..63122e8 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..757ce8e --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,40 @@ + + + + #FF000000 + #FFFFFFFF + + #80000000 + #E4E1E1 + + #434242 + + + #E6CBCCCC + + #CECECE + #FA666B + + + + + + + + #D6242A + #cccccc + + + + + + #897BED + #A18DFD + + #80CCC2F8 + + + #FED400 + #FA6502 + + \ 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..03bbe94 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,25 @@ + + Prank Party + 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..e5d3582 --- /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.1.3" apply false + id("org.jetbrains.kotlin.android") version "1.8.10" 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..a607998 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Tue May 28 10:52:01 CST 2024 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-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..727fb20 --- /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 = "Prank Party" +include(":app") + \ No newline at end of file