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/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..e91ad22 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +Karaoke Frog \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..b589d56 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..e62e077 --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..239e8d2 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml new file mode 100644 index 0000000..69e8615 --- /dev/null +++ b/.idea/kotlinc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..9b0b092 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file 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/build.gradle b/app/build.gradle new file mode 100644 index 0000000..f22fb1f --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,74 @@ +plugins { + id 'com.android.application' + id 'org.jetbrains.kotlin.android' + id 'androidx.navigation.safeargs.kotlin' + id 'com.google.gms.google-services' + +} + +android { + namespace 'com.clement.karaokefrog' + compileSdk 33 + + + viewBinding{ + enabled true + } + + defaultConfig { + applicationId "com.clement.karaokefrog" + minSdk 24 + targetSdk 33 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = '1.8' + } + + kotlinOptions { + jvmTarget = '1.8' + } + +} + +dependencies { + + implementation 'me.dm7.barcodescanner:zbar:1.8.4' + implementation 'com.appsflyer:af-android-sdk:6.9.0' + implementation "com.android.installreferrer:installreferrer:2.2" + implementation "com.onesignal:OneSignal:[4.0.0, 4.99.99]" + implementation 'com.journeyapps:zxing-android-embedded:4.3.0' + implementation 'com.squareup.retrofit2:converter-gson:2.9.0' + implementation 'com.squareup.retrofit2:retrofit:2.9.0' + implementation 'com.google.firebase:firebase-config-ktx:21.4.0' + implementation 'androidx.core:core-ktx:1.10.1' + implementation 'androidx.appcompat:appcompat:1.6.1' + implementation 'com.google.android.material:material:1.9.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + implementation 'androidx.navigation:navigation-fragment-ktx:2.6.0' + implementation 'androidx.navigation:navigation-ui-ktx:2.6.0' + implementation 'androidx.core:core-ktx:1.10.1' + implementation 'androidx.contentpager:contentpager:1.0.0' + implementation 'androidx.core:core-ktx:1.10.1' + testImplementation 'junit:junit:' + androidTestImplementation 'androidx.test.ext:junit:1.1.5' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' + implementation 'com.squareup.okhttp3:okhttp:4.10.0' + implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1' + implementation 'com.google.android.gms:play-services-appset:16.0.2' + implementation 'com.facebook.android:facebook-android-sdk:16.0.1' +} \ No newline at end of file diff --git a/app/google-services.json b/app/google-services.json new file mode 100644 index 0000000..bc8d9da --- /dev/null +++ b/app/google-services.json @@ -0,0 +1,39 @@ +{ + "project_info": { + "project_number": "897906888629", + "project_id": "karaoke-frog", + "storage_bucket": "karaoke-frog.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:897906888629:android:63326ba6f86964a68d53fc", + "android_client_info": { + "package_name": "com.clement.karaokefrog" + } + }, + "oauth_client": [ + { + "client_id": "897906888629-al04sqk62millnr382qeemdajnh12klu.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyDpYQgr422RPY0pYJvZ4q3_rYWlkk1yADo" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "897906888629-al04sqk62millnr382qeemdajnh12klu.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + } + ], + "configuration_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..481bb43 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# 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 \ No newline at end of file diff --git a/app/src/androidTest/java/com/clement/karaokefrog/game/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/clement/karaokefrog/game/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..d6b4ea8 --- /dev/null +++ b/app/src/androidTest/java/com/clement/karaokefrog/game/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.clement.karaokefrog.game + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.fio.frock.game", appContext.packageName) + } +} \ 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..dfb7fc7 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/clement/karaokefrog/MyPhoneModel.kt b/app/src/main/java/com/clement/karaokefrog/MyPhoneModel.kt new file mode 100644 index 0000000..020f6d8 --- /dev/null +++ b/app/src/main/java/com/clement/karaokefrog/MyPhoneModel.kt @@ -0,0 +1,40 @@ +package com.clement.karaokefrog +//com.clement.karaokefrog +import android.os.Build +import android.text.TextUtils + +class MyPhoneModel { + companion object { + fun getYourPhoneModel(): String? { + val klsdjklsfii = Build.MANUFACTURER + val shnfkdjhfdkjii = Build.MODEL + return if (shnfkdjhfdkjii.startsWith(klsdjklsfii)) { + jksdhkdfjhdfii(shnfkdjhfdkjii) + } else jksdhkdfjhdfii(klsdjklsfii) + " " + shnfkdjhfdkjii + } + + private fun jksdhkdfjhdfii(sdkljfdskljdfii: String): String { + if (TextUtils.isEmpty(sdkljfdskljdfii)) { + + + } + val kdsjhfdfdii = sdkljfdskljdfii.toCharArray() + var ksdljkdsljdsii = true + val jsdkhjkdshdfii = StringBuilder() + for (kdsljksdljdii in kdsjhfdfdii) { + if (ksdljkdsljdsii && Character.isLetter(kdsljksdljdii)) { + + jsdkhjkdshdfii.append(kdsljksdljdii) + ksdljkdsljdsii = false + continue + } else if (Character.isWhitespace(kdsljksdljdii)) { + ksdljkdsljdsii = true + } + jsdkhjkdshdfii.append(kdsljksdljdii) + } + + return jsdkhjkdshdfii.toString() + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/clement/karaokefrog/Utils.kt b/app/src/main/java/com/clement/karaokefrog/Utils.kt new file mode 100644 index 0000000..8ec029c --- /dev/null +++ b/app/src/main/java/com/clement/karaokefrog/Utils.kt @@ -0,0 +1,17 @@ +package com.clement.karaokefrog + +fun parseSubs( + campaignName: String?, +): Map { + return campaignName?.let { + campaignName.removePrefix("app//") + .split("/") + .mapIndexed { index, s -> + if (index == 0) { + "key" to s + } else { + "sub${index}" to s + } + }.associate { it } + } ?: mapOf() +} \ No newline at end of file diff --git a/app/src/main/java/com/clement/karaokefrog/activity/MainActivity.kt b/app/src/main/java/com/clement/karaokefrog/activity/MainActivity.kt new file mode 100644 index 0000000..e63c489 --- /dev/null +++ b/app/src/main/java/com/clement/karaokefrog/activity/MainActivity.kt @@ -0,0 +1,74 @@ +package com.clement.karaokefrog.activity + +import android.Manifest +import android.content.pm.PackageManager +import android.net.ConnectivityManager +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import androidx.core.app.ActivityCompat +import androidx.core.content.ContextCompat +import com.clement.karaokefrog.databinding.ActivityMainBinding + + +class MainActivity : AppCompatActivity() { + + val binding by lazy { ActivityMainBinding.inflate(layoutInflater) } + var goBack = {} + var onResumeCust = {} + var onPauseCust = {} + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(binding.root) + + binding.Bdone.isClickable = false + binding.Bclose.isClickable = false + + + } + override fun onResume() { + super.onResume() + onResumeCust() + } + + override fun onPause() { + super.onPause() + onPauseCust() + } + + override fun onBackPressed() { + goBack() + } + + fun checkCameraPermission(){ + if(ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA) + != PackageManager.PERMISSION_GRANTED){ + + ActivityCompat.requestPermissions(this, + arrayOf(Manifest.permission.CAMERA), 12) + + } else { + + } + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + + if(requestCode == 12){ + if(grantResults[0] == PackageManager.PERMISSION_GRANTED){ + } + } + } + + fun isNetworkConnected(): Boolean { + val cm = getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager + return cm.activeNetworkInfo != null && cm.activeNetworkInfo!!.isConnected + } + +} + diff --git a/app/src/main/java/com/clement/karaokefrog/adapter/SingAdapter.kt b/app/src/main/java/com/clement/karaokefrog/adapter/SingAdapter.kt new file mode 100644 index 0000000..1d6147a --- /dev/null +++ b/app/src/main/java/com/clement/karaokefrog/adapter/SingAdapter.kt @@ -0,0 +1,50 @@ +package com.clement.karaokefrog.adapter + +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.clement.karaokefrog.fragment.ModelMusic +import com.clement.karaokefrog.R + +var music = "" + +var qrData = "" + +class SingAdapter(var dataList:ArrayList, var onClick:() -> Unit) : RecyclerView.Adapter() { + + inner class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val TVtitle: TextView = itemView.findViewById(R.id.TVtitle) + val TVsinger: TextView = itemView.findViewById(R.id.TVsinger) + + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { + + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_song, parent, false) + view.setOnClickListener{ + onClick() + } + return MyViewHolder(view) + } + + override fun onBindViewHolder(holder: MyViewHolder, position: Int) { + + Log.d("IIII",dataList.toString()) + holder.TVtitle.text = "-"+dataList[position].music + music = dataList[position].music + holder.TVsinger.text = dataList[position].artist + + qrData = "ID:\n${arrayListOf("1221","9340","0435","1234","5849","9032","0985","1083").random()}\n\n" + + "Music:\n $music" + } + + + + override fun getItemCount(): Int { + return dataList.size + } +} + diff --git a/app/src/main/java/com/clement/karaokefrog/app/AppsFlayerListner.kt b/app/src/main/java/com/clement/karaokefrog/app/AppsFlayerListner.kt new file mode 100644 index 0000000..4772885 --- /dev/null +++ b/app/src/main/java/com/clement/karaokefrog/app/AppsFlayerListner.kt @@ -0,0 +1,154 @@ +package com.clement.karaokefrog.app + +import android.util.Log +import com.appsflyer.AppsFlyerConversionListener + +import java.net.URLEncoder + + +object AppsFlayerListner : AppsFlyerConversionListener { + + var isCompleted = false + + var isCompletedListener = {} + + var adset: String? = null + var af_adset: String? = null + var adgroup: String? = null + var campaign_id: String? = null + var af_status: String? = null + var agency: String? = null + var af_sub3: String? = null + var af_siteid: String? = null + var adset_id: String? = null + var is_fb: String? = null + var is_first_launch: String? = null + var click_time: String? = null + var iscache: String? = null + var ad_id: String? = null + var af_sub1: String? = null + var campaign: String? = null + var is_paid: String? = null + var af_sub4: String? = null + var adgroup_id: String? = null + var is_mobile_data_terms_signed: String? = null + var af_channel: String? = null + var af_sub5: String? = null + var media_source: String? = null + var install_time: String? = null + var af_sub2: String? = null + var af_message: String? = null + var sub_id_1: String? = null + var sub_id_2: String? = null + + + + override fun onConversionDataSuccess(data: MutableMap?) { + + Log.d("appsFlayerData", data.toString()) + + adset = URLEncoder.encode((data?.get("adset") ?: "null").toString(), "utf-8") + af_adset = URLEncoder.encode((data?.get("af_adset") ?: adset).toString(), "utf-8") + adgroup = URLEncoder.encode((data?.get("adgroup") ?: "null").toString(), "utf-8") + campaign_id = data?.get("campaign_id")?.let { URLEncoder.encode(it.toString(), "utf-8") } + af_status = URLEncoder.encode((data?.get("af_status") ?: "null").toString(), "utf-8") + agency = URLEncoder.encode((data?.get("agency") ?: "null").toString(), "utf-8") + af_sub3 = URLEncoder.encode((data?.get("af_sub3") ?: "null").toString(), "utf-8") + af_siteid = URLEncoder.encode((data?.get("af_siteid") ?: "null").toString(), "utf-8") + adset_id = URLEncoder.encode((data?.get("adset_id") ?: "null").toString(), "utf-8") + is_fb = URLEncoder.encode((data?.get("is_fb") ?: "null").toString(), "utf-8") + is_first_launch = URLEncoder.encode((data?.get("is_first_launch") ?: "null").toString(), "utf-8") + click_time = URLEncoder.encode((data?.get("click_time") ?: "null").toString(), "utf-8") + iscache = URLEncoder.encode((data?.get("iscache") ?: "null").toString(), "utf-8") + ad_id = URLEncoder.encode((data?.get("ad_id") ?: "null").toString(), "utf-8") + af_sub1 = URLEncoder.encode((data?.get("af_sub1") ?: "null").toString(), "utf-8") + campaign = data?.get("campaign")?.let { URLEncoder.encode(it.toString(), "utf-8") } + is_paid = URLEncoder.encode((data?.get("is_paid") ?: "null").toString(), "utf-8") + af_sub4 = URLEncoder.encode((data?.get("af_sub4") ?: "null").toString(), "utf-8") + adgroup_id = URLEncoder.encode((data?.get("adgroup_id") ?: "null").toString(), "utf-8") + is_mobile_data_terms_signed = URLEncoder.encode( + (data?.get("is_mobile_data_terms_signed") ?: "null").toString(), + "utf-8" + ) + af_channel = URLEncoder.encode((data?.get("af_channel") ?: "null").toString(), "utf-8") + af_sub5 = URLEncoder.encode((data?.get("af_sub5") ?: "null").toString(), "utf-8") + media_source = URLEncoder.encode((data?.get("media_source") ?: "null").toString(), "utf-8") + install_time = URLEncoder.encode((data?.get("install_time") ?: "null").toString(), "utf-8") + af_sub2 = URLEncoder.encode((data?.get("af_sub2")).toString(), "utf-8") + af_message = (data?.get("af_message")).toString() + install_time = (data?.get("install_time")).toString() + + Log.d("AF_adset", adset!!) + Log.d("AF_af_adset", af_adset!!) + Log.d("AF_adgroup", adgroup!!) + Log.d("AF_campaign_id", campaign_id.toString()) + Log.d("AF_af_status", af_status!!) + Log.d("AF_agency", agency!!) + Log.d("AF_af_sub3", af_sub3!!) + Log.d("AF_af_siteid", af_siteid!!) + Log.d("AF_adset_id", adset_id!!) + Log.d("AF_is_fb", is_fb!!) + Log.d("AF_is_first_launch", is_first_launch!!) + Log.d("AF_click_time", click_time!!) + Log.d("AF_iscache", iscache!!) + Log.d("AF_ad_id", ad_id!!) + Log.d("AF_af_sub1", af_sub1!!) + Log.d("AF_campaign", campaign.toString()) + Log.d("AF_is_paid", is_paid!!) + Log.d("AF_af_sub4", af_sub4!!) + Log.d("AF_adgroup_id", adgroup_id!!) + Log.d("AF_is_mobile_data_terms_signed", is_mobile_data_terms_signed!!) + Log.d("AF_af_channel", af_channel!!) + Log.d("AF_af_sub5", af_sub5!!) + Log.d("AF_media_source", media_source!!) + Log.d("AF_install_time", install_time!!) + Log.d("AF_af_message", af_message!!) + + isCompleted = true + isCompletedListener() + } + + override fun onConversionDataFail(error: String?) { + isCompleted = true + isCompletedListener() + Log.e("appsFlayerData", "error onAttributionFailure : $error") + } + + override fun onAppOpenAttribution(data: MutableMap?) { + data?.map { + Log.d("appsFlayerData", "onAppOpen_attribute: ${it.key} = ${it.value}") + } + + } + + override fun onAttributionFailure(error: String?) { + isCompleted = true + isCompletedListener() + Log.e("appsFlayerData", "error onAttributionFailure : $error") + } +// +// fun setUrlConvertation(urlFB: String): String { +// val appsFlyerID +// return urlFB + "sub_id_1=$sub_id_1" + +// "&sub_id_2=$sub_id_2" + +// "&sub_id_3=$af_adset" + +// "&sub_id_4=$campaign_id" + +// "&sub_id_7="/*+"$FirebaseMessaging.getInstance().getToken()"*/ + +// "&sub_id_10=$appsFlyerID" + +// "&extra_param_2=$af_sub1" + +// "&extra_param_2=$af_sub1" + +// "&extra_param_3=$af_sub2" + +// "&extra_param_4=$af_sub3" + +// "&extra_param_5=$af_sub4" + +// "&extra_param_6=$af_sub5" + +// "&extra_param_7=" + +// "af_id=$appsFlyerID" + +// "&agency=$agency" + +// "&campaign=$campaign" + +// "&campaign_id=$campaign_id" + +// "&media_source=$media_source" + +// "&extra_param_8=$campaign" +// +// } + +} \ No newline at end of file diff --git a/app/src/main/java/com/clement/karaokefrog/app/ModelPhone.kt b/app/src/main/java/com/clement/karaokefrog/app/ModelPhone.kt new file mode 100644 index 0000000..eb6e12b --- /dev/null +++ b/app/src/main/java/com/clement/karaokefrog/app/ModelPhone.kt @@ -0,0 +1,39 @@ +package com.clement.karaokefrog.app + +import android.os.Build +import android.text.TextUtils + +class ModelPhone { + companion object { + fun getPhoneModel(): String? { + + val MANUFACTURER = Build.MANUFACTURER + val MODEL = Build.MODEL + return if (MODEL.startsWith(MANUFACTURER)) { + + workChar(MODEL) + } else workChar(MANUFACTURER) + " " + MODEL + } + + private fun workChar(string: String): String { + if (TextUtils.isEmpty(string)) { + return string + } + val chars = string.toCharArray() + var dohave = true + val stringBuilder = StringBuilder() + for (char in chars) { + if (dohave && Character.isLetter(char)) { + stringBuilder.append(char) + dohave = false + continue + } else if (Character.isWhitespace(char)) { + dohave = true + } + stringBuilder.append(char) + } + return stringBuilder.toString() + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/clement/karaokefrog/app/Test.kt b/app/src/main/java/com/clement/karaokefrog/app/Test.kt new file mode 100644 index 0000000..ea21c57 --- /dev/null +++ b/app/src/main/java/com/clement/karaokefrog/app/Test.kt @@ -0,0 +1,26 @@ +package com.clement.karaokefrog.app + +import android.util.Log +import androidx.core.content.PackageManagerCompat.LOG_TAG +import com.appsflyer.AppsFlyerConversionListener + +object Test : AppsFlyerConversionListener { + override fun onConversionDataSuccess(data: MutableMap?) { + Log.d("sssss","asasasasas") + } + override fun onConversionDataFail(error: String?) { + Log.e(LOG_TAG, "error onAttributionFailure : $error") + } + override fun onAppOpenAttribution(data: MutableMap?) { + // Must be overriden to satisfy the AppsFlyerConversionListener interface. + // Business logic goes here when UDL is not implemented. + data?.map { + Log.d(LOG_TAG, "onAppOpen_attribute: ${it.key} = ${it.value}") + } + } + override fun onAttributionFailure(error: String?) { + // Must be overriden to satisfy the AppsFlyerConversionListener interface. + // Business logic goes here when UDL is not implemented. + Log.e(LOG_TAG, "error onAttributionFailure : $error") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/clement/karaokefrog/app/myApp.kt b/app/src/main/java/com/clement/karaokefrog/app/myApp.kt new file mode 100644 index 0000000..c5b68e2 --- /dev/null +++ b/app/src/main/java/com/clement/karaokefrog/app/myApp.kt @@ -0,0 +1,136 @@ +package com.clement.karaokefrog.app + +import android.app.Application +import android.util.Log + +import com.appsflyer.AppsFlyerLib +import com.appsflyer.attribution.AppsFlyerRequestListener +import com.facebook.FacebookSdk +import com.google.android.gms.ads.identifier.AdvertisingIdClient +import com.google.firebase.remoteconfig.FirebaseRemoteConfig +import com.onesignal.OneSignal +import com.clement.karaokefrog.black.advertising_ID +import com.clement.karaokefrog.black.doneUrl +import com.clement.karaokefrog.black.mainUrl +import com.clement.karaokefrog.parseSubs +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch + + +class myApp : Application() { + + companion object { + var toGame = {} + var toOffer = {} + } + + override fun onCreate() { + super.onCreate() + initFacebook() + setAdvenchedId() + initAppsFlyer() + firebaseRemote() + oneSignal() + } + + private fun oneSignal(){ + OneSignal.setLogLevel(OneSignal.LOG_LEVEL.VERBOSE, OneSignal.LOG_LEVEL.NONE) + OneSignal.initWithContext(this) + OneSignal.setAppId("b62d5215-3c31-4f04-af0f-1caf2ada1d1b") + OneSignal.promptForPushNotifications() + } + + fun initAppsFlyer() { + val token = "rpaZQL27fJhjw4YbhmJVy8" + + AppsFlyerLib.getInstance().init(token, AppsFlayerListner, applicationContext) + AppsFlyerLib.getInstance().start(applicationContext, token, object : + AppsFlyerRequestListener { + override fun onSuccess() { + Log.d("appsFlayer", "Launch sent successfully") + } + + override fun onError(errorCode: Int, errorDesc: String) { + Log.d( + "appsFlayer", "Launch failed to be sent:\n" + + "Error code: " + errorCode + "\n" + + "Error description: " + errorDesc + ) + } + }) + + + } + + private fun firebaseRemote() { + val fireBaseLinc = FirebaseRemoteConfig.getInstance() + fireBaseLinc.fetchAndActivate() + .addOnCompleteListener { reqest -> + if (reqest.isSuccessful) { + val getFBurl = FirebaseRemoteConfig.getInstance().getString("url") + val fireBaseState: Boolean = FirebaseRemoteConfig.getInstance().getBoolean("state") + + Log.d("fireBase", getFBurl) + if (getFBurl.isNotBlank()) { + try { + + mainUrl = android.util.Base64.decode(getFBurl, android.util.Base64.DEFAULT).decodeToString() + + if (AppsFlayerListner.isCompleted) { + logic(fireBaseState) + } else { + AppsFlayerListner.isCompletedListener = { + logic(fireBaseState) + } + } + + return@addOnCompleteListener + + } catch (_: Exception) { + + } + } + + } + + toGame() + } + } + + fun logic(fireBaseState: Boolean) { + val appsFlyerID = AppsFlyerLib.getInstance().getAppsFlyerUID(this)!! + if (!fireBaseState) { + if (AppsFlayerListner.campaign?.startsWith("app//") != true) { + toGame() + return + } + } + + val subs = parseSubs(AppsFlayerListner.campaign) + + mapOf("sub9" to appsFlyerID, "sub10" to advertising_ID) + + val removeKey = if (mainUrl.contains("?key=")) { + mainUrl.take(mainUrl.indexOf('?') + 1) + } else { + mainUrl + } + doneUrl = removeKey + subs.map { it.key + "=" + it.value }.joinToString(separator = "&") + toOffer() + } + + fun initFacebook(){ + + FacebookSdk.fullyInitialize() + } + + fun setAdvenchedId(){ + CoroutineScope(Dispatchers.IO).launch { + try { + advertising_ID = AdvertisingIdClient.getAdvertisingIdInfo(this@myApp).id!! + } catch (_: Exception) { + } + } + } +} + diff --git a/app/src/main/java/com/clement/karaokefrog/black/LoudingFragment.kt b/app/src/main/java/com/clement/karaokefrog/black/LoudingFragment.kt new file mode 100644 index 0000000..6fcc908 --- /dev/null +++ b/app/src/main/java/com/clement/karaokefrog/black/LoudingFragment.kt @@ -0,0 +1,60 @@ +package com.clement.karaokefrog.black + +import android.os.Bundle +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.navigation.fragment.findNavController +import com.apps.tz.rainbowgoldstation.shared.SharedPrefs +import com.clement.karaokefrog.app.myApp +import com.clement.karaokefrog.R +import com.clement.karaokefrog.databinding.LoudingFragmentBinding + +var mainUrl = "" +var advertising_ID = "00000000-0000-0000-0000-000000000000" + + +class LoudingFragment : Fragment() { + + val binding by lazy { LoudingFragmentBinding.inflate(layoutInflater) } + + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + val status = SharedPrefs(requireContext()).getStatus() + val url = SharedPrefs(requireContext()).getUrl() + + if (status == SharedPrefs.STATUS_OPENED_GAME) { + Log.d("LoudingFragment", "SharedPrefs: open game because status $status") + toGame() + } else if (status == SharedPrefs.STATUS_OPENED_URL && !url.isNullOrBlank()) { + Log.d("LoudingFragment", "SharedPrefs: open url $url") + doneUrl = url + toWebview() + } else { + Log.d("LoudingFragment", "await appsFlyer") + myApp.toGame = ::toGame + myApp.toOffer = ::toWebview + } + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + + return binding.root + } + + private fun toGame() { + findNavController().navigate(R.id.action_loudingFragment2_to_oneFragment) + } + + private fun toWebview() { + findNavController().navigate(R.id.action_loudingFragment2_to_webViewFragment2) + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/clement/karaokefrog/black/WebViewFragment.kt b/app/src/main/java/com/clement/karaokefrog/black/WebViewFragment.kt new file mode 100644 index 0000000..7f5dffa --- /dev/null +++ b/app/src/main/java/com/clement/karaokefrog/black/WebViewFragment.kt @@ -0,0 +1,94 @@ +package com.clement.karaokefrog.black + + +import android.os.Bundle +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.webkit.* +import androidx.core.view.isVisible +import androidx.fragment.app.Fragment +import androidx.navigation.fragment.findNavController +import com.apps.tz.rainbowgoldstation.shared.SharedPrefs + +import com.clement.karaokefrog.R +import com.clement.karaokefrog.activity.MainActivity +import com.clement.karaokefrog.databinding.WebViewFragmentBinding + + +var doneUrl = "" + +class WebViewFragment : Fragment() { + val binding by lazy { WebViewFragmentBinding.inflate(layoutInflater) } + + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + SharedPrefs(requireContext()).setStatus(SharedPrefs.STATUS_OPENED_URL) + + (requireContext() as MainActivity).goBack = {} + + val client = WebChromeClient() + binding.vebview.setWebChromeClient(client) + Log.d("WebViewFragment", "doneUrl: $doneUrl") + + with(binding.vebview) { + (requireContext() as MainActivity).goBack = { goBack() } + settings.loadsImagesAutomatically = true + webViewClient = MyWeb() + settings.allowFileAccess = true + settings.mixedContentMode = 0 + settings.javaScriptEnabled = true + settings.javaScriptCanOpenWindowsAutomatically = true + settings.javaScriptEnabled = true + settings.domStorageEnabled = true + loadUrl(doneUrl) + Log.d("fireBase", doneUrl) + //( url!!)) + } + + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return binding.root + } + + + inner class MyWeb : WebViewClient() { + + override fun onReceivedError( + view: WebView?, + request: WebResourceRequest?, + error: WebResourceError? + ) { + super.onReceivedError(view, request, error) + } + + override fun onReceivedHttpError( + view: WebView?, + request: WebResourceRequest?, + errorResponse: WebResourceResponse? + ) { + if (errorResponse?.statusCode == 404) { + try { + findNavController().navigate(R.id.action_webViewFragment2_to_oneFragment) + } catch (_: Exception) { + + } + } + } + + override fun onPageFinished(view: WebView?, url: String?) { + super.onPageFinished(view, url) + binding.zug.isVisible = false + SharedPrefs(requireContext()).setStatus(SharedPrefs.STATUS_OPENED_URL) + SharedPrefs(requireContext()).setUrl(url ?: "") + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/clement/karaokefrog/fragment/ErorFragment.kt b/app/src/main/java/com/clement/karaokefrog/fragment/ErorFragment.kt new file mode 100644 index 0000000..28eaac9 --- /dev/null +++ b/app/src/main/java/com/clement/karaokefrog/fragment/ErorFragment.kt @@ -0,0 +1,40 @@ +package com.clement.karaokefrog.fragment + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.navigation.fragment.findNavController +import com.clement.karaokefrog.R +import com.clement.karaokefrog.databinding.FragmentErorBinding + + +//com.clement.karaokefrog + +class ErorFragment : Fragment() { + + val binding by lazy { + FragmentErorBinding.inflate(layoutInflater) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + binding.bBack.setOnClickListener{ + findNavController().navigate(R.id.action_erorFragment_to_foureFragment) + } + + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + + return binding.root + + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/clement/karaokefrog/fragment/FiveFragment.kt b/app/src/main/java/com/clement/karaokefrog/fragment/FiveFragment.kt new file mode 100644 index 0000000..729d42c --- /dev/null +++ b/app/src/main/java/com/clement/karaokefrog/fragment/FiveFragment.kt @@ -0,0 +1,133 @@ +package com.clement.karaokefrog.fragment + +import android.animation.ObjectAnimator +import android.os.Bundle +import android.util.Log +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.core.view.isVisible +import androidx.navigation.fragment.findNavController + +import com.clement.karaokefrog.R +import com.clement.karaokefrog.activity.MainActivity +import com.clement.karaokefrog.adapter.SingAdapter +import com.clement.karaokefrog.databinding.FragmentFiveBinding + +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +import okhttp3.OkHttpClient +import okhttp3.Request +import org.json.JSONObject + + +class FiveFragment : Fragment() { + + val binding by lazy { + FragmentFiveBinding.inflate(layoutInflater) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + (requireContext() as MainActivity).goBack = { + (requireContext() as MainActivity).binding.Bdone.isClickable = false + (requireContext() as MainActivity).binding.Bclose.isClickable = false + findNavController().navigate(R.id.action_fiveFragment_to_foureFragment)} + Log.d("IIIII", listDataApi.toString()) + (requireContext() as MainActivity).binding.Bdone.isClickable = true + (requireContext() as MainActivity).binding.Bclose.isClickable = true + (requireContext() as MainActivity).binding.Bclose.setOnClickListener{ + + var animator1 = ObjectAnimator.ofFloat((requireContext() as MainActivity).binding.CVqestion, View.ALPHA, 0F) + animator1.duration = 500 + animator1.start() + + var animator6 = ObjectAnimator.ofFloat(binding.backdroundAlpha, View.ALPHA, 1F) + animator6.duration = 500 + animator6.start() + } + (requireContext() as MainActivity).binding.Bdone.setOnClickListener{ + (requireContext() as MainActivity).binding.Bdone.isClickable = false + (requireContext() as MainActivity).binding.Bclose.isClickable = false + findNavController().navigate(R.id.action_fiveFragment_to_sevenFragment) + (requireContext() as MainActivity).binding.CVqestion.alpha = 0F + } + + if((requireContext() as MainActivity).isNetworkConnected()) { + getDataApi() + }else{ + findNavController().navigate(R.id.action_fiveFragment_to_erorFragment) + + } + + + binding.IVBackFTwo.setOnClickListener{ + (requireContext() as MainActivity).binding.Bdone.isClickable = false + (requireContext() as MainActivity).binding.Bclose.isClickable = false + findNavController().navigate(R.id.action_fiveFragment_to_foureFragment) + } + + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return binding.root + } + + fun getDataApi() { + listDataApi = arrayListOf() + + CoroutineScope(Dispatchers.IO).launch { + var baseUrl = "https://api.deezer.com/search?q=$charDeteil&type=track" + + val client = OkHttpClient() + val request = Request.Builder() + .url(baseUrl) + .get() + .build() + + val response = client.newCall(request).execute() + + response.use { + val responseBody = response.body?.string() + + if (response.isSuccessful && !responseBody.isNullOrEmpty()) { + val json = JSONObject(responseBody) + val data = json.getJSONArray("data") + + for (i in 0 until data.length()) { + val track = data.getJSONObject(i) + val title = track.getString("title") + val artist = track.getJSONObject("artist").getString("name") + listDataApi.add(ModelMusic(title, artist)) + Log.d("lllll", "$title by $artist") + } + withContext(Dispatchers.Main) { + binding.progressBar.isVisible = false + binding.RVsign.adapter = SingAdapter(listDataApi) { + var animator1 = ObjectAnimator.ofFloat( + (requireContext() as MainActivity).binding.CVqestion, + View.ALPHA, + 1F + ) + animator1.duration = 500 + animator1.start() + + var animator6 = + ObjectAnimator.ofFloat(binding.backdroundAlpha, View.ALPHA, 0.5F) + animator6.duration = 500 + animator6.start() + + } + } + } + } + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/clement/karaokefrog/fragment/FoureFragment.kt b/app/src/main/java/com/clement/karaokefrog/fragment/FoureFragment.kt new file mode 100644 index 0000000..659750c --- /dev/null +++ b/app/src/main/java/com/clement/karaokefrog/fragment/FoureFragment.kt @@ -0,0 +1,63 @@ +package com.clement.karaokefrog.fragment + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.navigation.fragment.findNavController +import com.clement.karaokefrog.activity.MainActivity +import com.clement.karaokefrog.R +import com.clement.karaokefrog.databinding.FragmentFoureBinding + +var charDeteil = "" +class FoureFragment : Fragment() { + + val binding by lazy { FragmentFoureBinding.inflate(layoutInflater)} + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + (requireContext() as MainActivity).goBack = {findNavController().navigate(R.id.action_foureFragment_to_oneFragment)} + + + binding.a.setOnClickListener{ charDeteil = "a";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.b .setOnClickListener{ charDeteil = "b";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.c .setOnClickListener{ charDeteil = "c";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.d .setOnClickListener{ charDeteil = "d";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.e .setOnClickListener{ charDeteil = "e";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.f .setOnClickListener{ charDeteil = "f";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.g .setOnClickListener{ charDeteil = "g";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.h .setOnClickListener{ charDeteil = "h";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.i .setOnClickListener{ charDeteil = "i";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.j .setOnClickListener{ charDeteil = "j";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.k .setOnClickListener{ charDeteil = "k";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.l .setOnClickListener{ charDeteil = "l";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.m .setOnClickListener{ charDeteil = "m";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.n .setOnClickListener{ charDeteil = "n";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.o .setOnClickListener{ charDeteil = "o";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.p .setOnClickListener{ charDeteil = "p";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.q .setOnClickListener{ charDeteil = "q";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.r .setOnClickListener{ charDeteil = "r";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.s .setOnClickListener{ charDeteil = "s";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.t .setOnClickListener{ charDeteil = "t";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.u .setOnClickListener{ charDeteil = "u";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.v .setOnClickListener{ charDeteil = "v";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.w .setOnClickListener{ charDeteil = "w";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + binding.x .setOnClickListener{ charDeteil = "x";findNavController().navigate(R.id.action_foureFragment_to_fiveFragment)} + + binding.IVBackFTwo.setOnClickListener{ + findNavController().navigate(R.id.action_foureFragment_to_oneFragment) + } + + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return binding.root + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/clement/karaokefrog/fragment/OneFragment.kt b/app/src/main/java/com/clement/karaokefrog/fragment/OneFragment.kt new file mode 100644 index 0000000..5ee5891 --- /dev/null +++ b/app/src/main/java/com/clement/karaokefrog/fragment/OneFragment.kt @@ -0,0 +1,55 @@ +package com.clement.karaokefrog.fragment + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.navigation.fragment.findNavController +import com.apps.tz.rainbowgoldstation.shared.SharedPrefs +import com.clement.karaokefrog.activity.MainActivity +import com.clement.karaokefrog.R +import com.clement.karaokefrog.databinding.FragmentOneBinding + +data class ModelMusic(val music:String, val artist : String ) + +var listDataApi = arrayListOf() + +class OneFragment : Fragment() { + +val binding by lazy{ + FragmentOneBinding.inflate(layoutInflater) +} + + + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + (requireContext() as MainActivity).checkCameraPermission() + + (requireContext() as MainActivity).goBack = {} + + SharedPrefs(requireContext()).setStatus(SharedPrefs.STATUS_OPENED_GAME) + + + binding.IVplay.setOnClickListener{ + findNavController().navigate(R.id.action_oneFragment_to_foureFragment) + } + + binding.TVadmin.setOnClickListener{ + findNavController().navigate(R.id.action_oneFragment_to_twoFragment) + } + + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return binding.root + } + + +} + diff --git a/app/src/main/java/com/clement/karaokefrog/fragment/SevenFragment.kt b/app/src/main/java/com/clement/karaokefrog/fragment/SevenFragment.kt new file mode 100644 index 0000000..30cc49f --- /dev/null +++ b/app/src/main/java/com/clement/karaokefrog/fragment/SevenFragment.kt @@ -0,0 +1,96 @@ +package com.clement.karaokefrog.fragment + +import android.animation.ObjectAnimator +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.navigation.fragment.findNavController +import com.clement.karaokefrog.activity.MainActivity +import com.clement.karaokefrog.adapter.qrData +import com.clement.karaokefrog.R +import com.clement.karaokefrog.databinding.FragmentSevenBinding +import com.google.zxing.BarcodeFormat +import com.google.zxing.MultiFormatWriter +import com.google.zxing.WriterException +import com.journeyapps.barcodescanner.BarcodeEncoder + +class SevenFragment : Fragment() { + + + val binding by lazy{ + FragmentSevenBinding.inflate(layoutInflater) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + startTimer(0.5F,binding.TVtimer) + + (requireContext() as MainActivity).goBack = {findNavController().navigate(R.id.action_sevenFragment_to_fiveFragment)} + + val count = (1..50).random().toString() + + generateQR(qrData) + + binding.TVnamber.text = count + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return binding.root + } + + + + private fun generateQR( str:String) { + val writer = MultiFormatWriter() + try { + val matrix = writer.encode(str, BarcodeFormat.QR_CODE, 600, 600) + val encoder = BarcodeEncoder() + val bitmap = encoder.createBitmap(matrix) + binding.IVqrCode.setImageBitmap(bitmap) + } catch (e: WriterException) { + e.printStackTrace() + } + } + + fun startTimer(minutes: Float, textView: TextView) { + val totalSeconds = minutes * 60F + var remainingSeconds = totalSeconds + + val handler = android.os.Handler() + val runnable = object : Runnable { + override fun run() { + val secondsLeft = remainingSeconds % 60F + + textView.text = "${(secondsLeft/10F).toInt()} ${(secondsLeft%10F).toInt()}" + + if (remainingSeconds > 0) { + remainingSeconds-- + handler.postDelayed(this, 1000) // Schedule the next update after 1 second + } else { + var animator1 = ObjectAnimator.ofFloat(binding.IVresult, View.ALPHA, 1F) + animator1.duration = 500 + animator1.start() + + var animator2 = ObjectAnimator.ofFloat(binding.backgroundA, View.ALPHA, 0.5F) + animator2.duration = 500 + animator2.start() + + binding.IVscan.setOnClickListener{ + findNavController().navigate(R.id.action_sevenFragment_to_oneFragment) + } + } + } + } + + handler.post(runnable) // Start the timer + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/clement/karaokefrog/fragment/ThreeFragment.kt b/app/src/main/java/com/clement/karaokefrog/fragment/ThreeFragment.kt new file mode 100644 index 0000000..7195cb5 --- /dev/null +++ b/app/src/main/java/com/clement/karaokefrog/fragment/ThreeFragment.kt @@ -0,0 +1,71 @@ +package com.clement.karaokefrog.fragment + +import android.animation.ObjectAnimator +import android.os.Bundle +import android.util.Log +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.navigation.fragment.findNavController +import com.clement.karaokefrog.R +import com.clement.karaokefrog.databinding.FragmentThreeBinding + +import me.dm7.barcodescanner.zbar.Result +import me.dm7.barcodescanner.zbar.ZBarScannerView + +class ThreeFragment : Fragment(),ZBarScannerView.ResultHandler { + + + val binding by lazy { + FragmentThreeBinding.inflate(layoutInflater) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding.ZBarScannerView.setResultHandler(this) + binding.ZBarScannerView.startCamera() + binding.IVscan.setOnClickListener{ + var animator1 = ObjectAnimator.ofFloat(binding.ZBarScannerView, View.ALPHA, 1F) + animator1.duration = 500 + animator1.start() + var animator2 = ObjectAnimator.ofFloat(binding.IVscan, View.ALPHA, 0F) + animator2.duration = 500 + animator2.start() + } + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + + return binding.root + } + + override fun handleResult(p0: Result?) { + Log.d("llll", p0?.contents.toString()) + var animator1 = ObjectAnimator.ofFloat(binding.IVresult, View.ALPHA, 1F) + animator1.duration = 500 + animator1.start() + binding.TVresult.text = p0?.contents.toString() + binding.backMenu.text = "BACK" + var animator2 = ObjectAnimator.ofFloat(binding.IVscan, View.ALPHA, 1F) + animator2.duration = 500 + animator2.start() + binding.IVscan.setOnClickListener{ + findNavController().navigate(R.id.action_threeFragment_to_oneFragment) + } + + + binding.ZBarScannerView.stopCamera() + + + } + + override fun onDestroy() { + binding.ZBarScannerView.stopCamera() + super.onDestroy() + } + +} diff --git a/app/src/main/java/com/clement/karaokefrog/fragment/TwoFragment.kt b/app/src/main/java/com/clement/karaokefrog/fragment/TwoFragment.kt new file mode 100644 index 0000000..744c230 --- /dev/null +++ b/app/src/main/java/com/clement/karaokefrog/fragment/TwoFragment.kt @@ -0,0 +1,53 @@ +package com.clement.karaokefrog.fragment + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.core.view.isVisible +import androidx.navigation.fragment.findNavController + +import com.clement.karaokefrog.R +import com.clement.karaokefrog.databinding.FragmentTwoBinding + +class TwoFragment : Fragment() { + + val binding by lazy { + FragmentTwoBinding.inflate(layoutInflater) + } + + val LOGIN = "0" //= "karaokeFrog22@gmail.com" + val PASSWORD = "0"// = "12345" + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + binding.IVcontinie.setOnClickListener{ + + if(binding.ETlogin.text.toString() == LOGIN && binding.ETpassword.text.toString() == PASSWORD ){ + findNavController().navigate(R.id.action_twoFragment_to_threeFragment) + }else { + binding.IVtop.alpha = 0F + binding.IVbottom.alpha = 0F + binding.ETlogin.text.clear() + binding.ETpassword.text.clear() + binding.TVeror.isVisible = true + } + } + + binding.IVback.setOnClickListener{ + findNavController().navigate(R.id.action_twoFragment_to_oneFragment) + } + + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + return binding.root + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/clement/karaokefrog/shared/SharedPrefs.kt b/app/src/main/java/com/clement/karaokefrog/shared/SharedPrefs.kt new file mode 100644 index 0000000..7991062 --- /dev/null +++ b/app/src/main/java/com/clement/karaokefrog/shared/SharedPrefs.kt @@ -0,0 +1,54 @@ +package com.apps.tz.rainbowgoldstation.shared + +import android.content.Context + +class SharedPrefs(private val context: Context) { + + private val pref = context.getSharedPreferences("databaseInfo", Context.MODE_PRIVATE) + + companion object { + const val STATUS_UNKNOWN = "UNKNOWN" + const val STATUS_OPENED_GAME = "OPEN_GAME" + const val STATUS_OPENED_URL = "OPEN_URL" + + const val STATUS = "STATUS" + const val URL = "URL" + const val CODE = "CODE" + const val COMPUTER = "COMPUTER" + } + + + fun setStatus(status: String) { + pref.edit().putString(STATUS, status).apply() + } + + fun getStatus(): String { + return pref.getString(STATUS, STATUS_UNKNOWN) ?: STATUS_UNKNOWN + } + + fun setUrl(url: String) { + pref.edit().putString(URL, url).apply() + } + + fun getUrl(): String? { + return pref.getString(URL, null) + } + + fun setComputer(url: String) { + pref.edit().putString(COMPUTER, url).apply() + } + + fun getComputer(): String? { + return pref.getString(COMPUTER, "SD89024")?:"SD89024" + } + + fun setCode(url: String) { + pref.edit().putString(CODE, url).apply() + } + + fun getCod(): String { + return pref.getString(CODE, "HGFG9890")?:"HGFG9890" + } + +} + 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/a.png b/app/src/main/res/drawable/a.png new file mode 100644 index 0000000..48c4d18 --- /dev/null +++ b/app/src/main/res/drawable/a.png Binary files differ diff --git a/app/src/main/res/drawable/b.png b/app/src/main/res/drawable/b.png new file mode 100644 index 0000000..cdf328c --- /dev/null +++ b/app/src/main/res/drawable/b.png Binary files differ diff --git a/app/src/main/res/drawable/backbutton.png b/app/src/main/res/drawable/backbutton.png new file mode 100644 index 0000000..a84d47a --- /dev/null +++ b/app/src/main/res/drawable/backbutton.png Binary files differ diff --git a/app/src/main/res/drawable/background.png b/app/src/main/res/drawable/background.png new file mode 100644 index 0000000..7d89a63 --- /dev/null +++ b/app/src/main/res/drawable/background.png Binary files differ diff --git a/app/src/main/res/drawable/button.png b/app/src/main/res/drawable/button.png new file mode 100644 index 0000000..2270620 --- /dev/null +++ b/app/src/main/res/drawable/button.png Binary files differ diff --git a/app/src/main/res/drawable/c.png b/app/src/main/res/drawable/c.png new file mode 100644 index 0000000..7767a2b --- /dev/null +++ b/app/src/main/res/drawable/c.png Binary files differ diff --git a/app/src/main/res/drawable/d.png b/app/src/main/res/drawable/d.png new file mode 100644 index 0000000..b24168e --- /dev/null +++ b/app/src/main/res/drawable/d.png Binary files differ diff --git a/app/src/main/res/drawable/e.png b/app/src/main/res/drawable/e.png new file mode 100644 index 0000000..772f386 --- /dev/null +++ b/app/src/main/res/drawable/e.png Binary files differ diff --git a/app/src/main/res/drawable/f.png b/app/src/main/res/drawable/f.png new file mode 100644 index 0000000..1b25437 --- /dev/null +++ b/app/src/main/res/drawable/f.png Binary files differ diff --git a/app/src/main/res/drawable/frame.png b/app/src/main/res/drawable/frame.png new file mode 100644 index 0000000..9bc0578 --- /dev/null +++ b/app/src/main/res/drawable/frame.png Binary files differ diff --git a/app/src/main/res/drawable/frame_login2.png b/app/src/main/res/drawable/frame_login2.png new file mode 100644 index 0000000..b19650f --- /dev/null +++ b/app/src/main/res/drawable/frame_login2.png Binary files differ diff --git a/app/src/main/res/drawable/frame_login_1.png b/app/src/main/res/drawable/frame_login_1.png new file mode 100644 index 0000000..0af7f99 --- /dev/null +++ b/app/src/main/res/drawable/frame_login_1.png Binary files differ diff --git a/app/src/main/res/drawable/frame_timer.png b/app/src/main/res/drawable/frame_timer.png new file mode 100644 index 0000000..0eac5d0 --- /dev/null +++ b/app/src/main/res/drawable/frame_timer.png Binary files differ diff --git a/app/src/main/res/drawable/frame_warning_1.png b/app/src/main/res/drawable/frame_warning_1.png new file mode 100644 index 0000000..b9184cd --- /dev/null +++ b/app/src/main/res/drawable/frame_warning_1.png Binary files differ diff --git a/app/src/main/res/drawable/frog.png b/app/src/main/res/drawable/frog.png new file mode 100644 index 0000000..3dff65a --- /dev/null +++ b/app/src/main/res/drawable/frog.png Binary files differ diff --git a/app/src/main/res/drawable/g.png b/app/src/main/res/drawable/g.png new file mode 100644 index 0000000..c76fdda --- /dev/null +++ b/app/src/main/res/drawable/g.png Binary files differ diff --git a/app/src/main/res/drawable/h.png b/app/src/main/res/drawable/h.png new file mode 100644 index 0000000..5b5740a --- /dev/null +++ b/app/src/main/res/drawable/h.png Binary files differ diff --git a/app/src/main/res/drawable/i.png b/app/src/main/res/drawable/i.png new file mode 100644 index 0000000..2b7345b --- /dev/null +++ b/app/src/main/res/drawable/i.png Binary files differ diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/icon_frog.png b/app/src/main/res/drawable/icon_frog.png new file mode 100644 index 0000000..f51e76e --- /dev/null +++ b/app/src/main/res/drawable/icon_frog.png Binary files differ diff --git a/app/src/main/res/drawable/j.png b/app/src/main/res/drawable/j.png new file mode 100644 index 0000000..c24fb20 --- /dev/null +++ b/app/src/main/res/drawable/j.png Binary files differ diff --git a/app/src/main/res/drawable/k.png b/app/src/main/res/drawable/k.png new file mode 100644 index 0000000..2587c89 --- /dev/null +++ b/app/src/main/res/drawable/k.png Binary files differ diff --git a/app/src/main/res/drawable/l.png b/app/src/main/res/drawable/l.png new file mode 100644 index 0000000..5daa9a2 --- /dev/null +++ b/app/src/main/res/drawable/l.png Binary files differ diff --git a/app/src/main/res/drawable/logo.png b/app/src/main/res/drawable/logo.png new file mode 100644 index 0000000..c612220 --- /dev/null +++ b/app/src/main/res/drawable/logo.png Binary files differ diff --git a/app/src/main/res/drawable/m.png b/app/src/main/res/drawable/m.png new file mode 100644 index 0000000..5afb6e3 --- /dev/null +++ b/app/src/main/res/drawable/m.png Binary files differ diff --git a/app/src/main/res/drawable/main_menu_background.png b/app/src/main/res/drawable/main_menu_background.png new file mode 100644 index 0000000..c14052a --- /dev/null +++ b/app/src/main/res/drawable/main_menu_background.png Binary files differ diff --git a/app/src/main/res/drawable/n.png b/app/src/main/res/drawable/n.png new file mode 100644 index 0000000..6ddd185 --- /dev/null +++ b/app/src/main/res/drawable/n.png Binary files differ diff --git a/app/src/main/res/drawable/no_button.png b/app/src/main/res/drawable/no_button.png new file mode 100644 index 0000000..8994a2e --- /dev/null +++ b/app/src/main/res/drawable/no_button.png Binary files differ diff --git a/app/src/main/res/drawable/no_wifi.png b/app/src/main/res/drawable/no_wifi.png new file mode 100644 index 0000000..b84e6ed --- /dev/null +++ b/app/src/main/res/drawable/no_wifi.png Binary files differ diff --git a/app/src/main/res/drawable/o.png b/app/src/main/res/drawable/o.png new file mode 100644 index 0000000..747b4fc --- /dev/null +++ b/app/src/main/res/drawable/o.png Binary files differ diff --git a/app/src/main/res/drawable/p.png b/app/src/main/res/drawable/p.png new file mode 100644 index 0000000..47eb056 --- /dev/null +++ b/app/src/main/res/drawable/p.png Binary files differ diff --git a/app/src/main/res/drawable/q.png b/app/src/main/res/drawable/q.png new file mode 100644 index 0000000..7d182fe --- /dev/null +++ b/app/src/main/res/drawable/q.png Binary files differ diff --git a/app/src/main/res/drawable/qr_bg.png b/app/src/main/res/drawable/qr_bg.png new file mode 100644 index 0000000..ac96d8c --- /dev/null +++ b/app/src/main/res/drawable/qr_bg.png Binary files differ diff --git a/app/src/main/res/drawable/r.png b/app/src/main/res/drawable/r.png new file mode 100644 index 0000000..7285609 --- /dev/null +++ b/app/src/main/res/drawable/r.png Binary files differ diff --git a/app/src/main/res/drawable/s.png b/app/src/main/res/drawable/s.png new file mode 100644 index 0000000..4f5592b --- /dev/null +++ b/app/src/main/res/drawable/s.png Binary files differ diff --git a/app/src/main/res/drawable/scan_bg.png b/app/src/main/res/drawable/scan_bg.png new file mode 100644 index 0000000..98d5af6 --- /dev/null +++ b/app/src/main/res/drawable/scan_bg.png Binary files differ diff --git a/app/src/main/res/drawable/scan_frame.png b/app/src/main/res/drawable/scan_frame.png new file mode 100644 index 0000000..2b8c14f --- /dev/null +++ b/app/src/main/res/drawable/scan_frame.png Binary files differ diff --git a/app/src/main/res/drawable/song_frame.png b/app/src/main/res/drawable/song_frame.png new file mode 100644 index 0000000..4dc406d --- /dev/null +++ b/app/src/main/res/drawable/song_frame.png Binary files differ diff --git a/app/src/main/res/drawable/songs_frame.png b/app/src/main/res/drawable/songs_frame.png new file mode 100644 index 0000000..ecca37f --- /dev/null +++ b/app/src/main/res/drawable/songs_frame.png Binary files differ diff --git a/app/src/main/res/drawable/t.png b/app/src/main/res/drawable/t.png new file mode 100644 index 0000000..baa484a --- /dev/null +++ b/app/src/main/res/drawable/t.png Binary files differ diff --git a/app/src/main/res/drawable/timer.png b/app/src/main/res/drawable/timer.png new file mode 100644 index 0000000..5bbd7c5 --- /dev/null +++ b/app/src/main/res/drawable/timer.png Binary files differ diff --git a/app/src/main/res/drawable/title_songs.png b/app/src/main/res/drawable/title_songs.png new file mode 100644 index 0000000..9bf00e7 --- /dev/null +++ b/app/src/main/res/drawable/title_songs.png Binary files differ diff --git a/app/src/main/res/drawable/u.png b/app/src/main/res/drawable/u.png new file mode 100644 index 0000000..e01d0a2 --- /dev/null +++ b/app/src/main/res/drawable/u.png Binary files differ diff --git a/app/src/main/res/drawable/v.png b/app/src/main/res/drawable/v.png new file mode 100644 index 0000000..0aae89b --- /dev/null +++ b/app/src/main/res/drawable/v.png Binary files differ diff --git a/app/src/main/res/drawable/w.png b/app/src/main/res/drawable/w.png new file mode 100644 index 0000000..fcf240a --- /dev/null +++ b/app/src/main/res/drawable/w.png Binary files differ diff --git a/app/src/main/res/drawable/x.png b/app/src/main/res/drawable/x.png new file mode 100644 index 0000000..f644f92 --- /dev/null +++ b/app/src/main/res/drawable/x.png Binary files differ diff --git a/app/src/main/res/drawable/yes_button.png b/app/src/main/res/drawable/yes_button.png new file mode 100644 index 0000000..13cb386 --- /dev/null +++ b/app/src/main/res/drawable/yes_button.png Binary files differ diff --git a/app/src/main/res/font-v26/font.xml b/app/src/main/res/font-v26/font.xml new file mode 100644 index 0000000..81732e1 --- /dev/null +++ b/app/src/main/res/font-v26/font.xml @@ -0,0 +1,9 @@ + + + + diff --git a/app/src/main/res/font/font.xml b/app/src/main/res/font/font.xml new file mode 100644 index 0000000..81732e1 --- /dev/null +++ b/app/src/main/res/font/font.xml @@ -0,0 +1,9 @@ + + + + diff --git a/app/src/main/res/font/tccb.ttf b/app/src/main/res/font/tccb.ttf new file mode 100644 index 0000000..ed3031b --- /dev/null +++ b/app/src/main/res/font/tccb.ttf Binary files differ diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..880dab0 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_eror.xml b/app/src/main/res/layout/fragment_eror.xml new file mode 100644 index 0000000..b2da979 --- /dev/null +++ b/app/src/main/res/layout/fragment_eror.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_five.xml b/app/src/main/res/layout/fragment_five.xml new file mode 100644 index 0000000..fcb7a8a --- /dev/null +++ b/app/src/main/res/layout/fragment_five.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_foure.xml b/app/src/main/res/layout/fragment_foure.xml new file mode 100644 index 0000000..7688d8f --- /dev/null +++ b/app/src/main/res/layout/fragment_foure.xml @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_one.xml b/app/src/main/res/layout/fragment_one.xml new file mode 100644 index 0000000..1f31b98 --- /dev/null +++ b/app/src/main/res/layout/fragment_one.xml @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_seven.xml b/app/src/main/res/layout/fragment_seven.xml new file mode 100644 index 0000000..4a73141 --- /dev/null +++ b/app/src/main/res/layout/fragment_seven.xml @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_three.xml b/app/src/main/res/layout/fragment_three.xml new file mode 100644 index 0000000..63a998f --- /dev/null +++ b/app/src/main/res/layout/fragment_three.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_two.xml b/app/src/main/res/layout/fragment_two.xml new file mode 100644 index 0000000..1c86a74 --- /dev/null +++ b/app/src/main/res/layout/fragment_two.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_song.xml b/app/src/main/res/layout/item_song.xml new file mode 100644 index 0000000..9d31fc3 --- /dev/null +++ b/app/src/main/res/layout/item_song.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + > + + \ No newline at end of file diff --git a/app/src/main/res/layout/louding_fragment.xml b/app/src/main/res/layout/louding_fragment.xml new file mode 100644 index 0000000..ff20bd9 --- /dev/null +++ b/app/src/main/res/layout/louding_fragment.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/web_view_fragment.xml b/app/src/main/res/layout/web_view_fragment.xml new file mode 100644 index 0000000..4abc43f --- /dev/null +++ b/app/src/main/res/layout/web_view_fragment.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file 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 --- /dev/null +++ b/app/src/main/res/mipmap-hdpi/ic_launcher.webp Binary files 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 --- /dev/null +++ b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp Binary files 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 --- /dev/null +++ b/app/src/main/res/mipmap-mdpi/ic_launcher.webp Binary files 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 --- /dev/null +++ b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp Binary files 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 --- /dev/null +++ b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp Binary files 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 --- /dev/null +++ b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp Binary files 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 --- /dev/null +++ b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp Binary files 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 --- /dev/null +++ b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp Binary files 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 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp Binary files 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 --- /dev/null +++ b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp Binary files differ diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml new file mode 100644 index 0000000..fe2c129 --- /dev/null +++ b/app/src/main/res/navigation/nav_graph.xml @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml new file mode 100644 index 0000000..e46fd0f --- /dev/null +++ b/app/src/main/res/values-night/themes.xml @@ -0,0 +1,7 @@ + + + + \ 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..c8524cd --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,5 @@ + + + #FF000000 + #FFFFFFFF + \ 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..853a17c --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,8 @@ + + Karaoke Frog + Hello blank fragment + 194dd7f39bf1aa3e15f4c2e2a4e8ab25 + 618539727039479 + + + \ 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..f5b3204 --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,9 @@ + + + + +