mirror of
				https://github.com/recloudstream/cloudstream.git
				synced 2024-08-15 01:53:11 +00:00 
			
		
		
		
	100% did not add an easter egg legit no scam 😳
This commit is contained in:
		
							parent
							
								
									7eb0c83dc5
								
							
						
					
					
						commit
						46846ab3cc
					
				
					 4 changed files with 163 additions and 7 deletions
				
			
		|  | @ -6,14 +6,13 @@ | |||
|     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- I dont remember, probs has to do with downloads --> | ||||
|     <uses-permission android:name="android.permission.INTERNET" /> <!-- unless you only use cs3 as a player for downloaded stuff, you need this --> | ||||
|     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- Downloads --> | ||||
|     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- Downloads on low api devices--> | ||||
|     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- Downloads on low api devices --> | ||||
|     <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /> <!-- Plugin API --> | ||||
|     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <!-- some dependency needs this --> | ||||
|     <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <!-- Used for player vertical slide--> | ||||
|     <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <!--Used for app update--> | ||||
|     <!--<uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA" /> not used atm, but code exist that requires it that are not run--> | ||||
|     <!--    <permission android:name="android.permission.QUERY_ALL_PACKAGES" /> <!– Used for getting if vlc is installed –>--> | ||||
| 
 | ||||
|     <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <!-- Used for player vertical slide --> | ||||
|     <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <!-- Used for app update --> | ||||
|     <!-- <uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA" /> not used atm, but code exist that requires it that are not run --> | ||||
|     <!-- <permission android:name="android.permission.QUERY_ALL_PACKAGES" /> <!– Used for getting if vlc is installed –> --> | ||||
|     <!-- Fixes android tv fuckery --> | ||||
|     <uses-feature | ||||
|         android:name="android.hardware.touchscreen" | ||||
|  | @ -36,6 +35,7 @@ | |||
|         android:theme="@style/AppTheme" | ||||
|         android:usesCleartextTraffic="true" | ||||
|         tools:targetApi="o"> | ||||
| 
 | ||||
|         <meta-data | ||||
|             android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME" | ||||
|             android:value="com.lagradost.cloudstream3.utils.CastOptionsProvider" /> | ||||
|  | @ -53,6 +53,7 @@ | |||
|             android:supportsPictureInPicture="true"> | ||||
|             <intent-filter> | ||||
|                 <action android:name="android.intent.action.VIEW" /> | ||||
| 
 | ||||
|                 <category android:name="android.intent.category.DEFAULT" /> | ||||
| 
 | ||||
|                 <data android:scheme="content" /> | ||||
|  | @ -62,7 +63,9 @@ | |||
|             <!-- I dont think this label can be translated, but idk --> | ||||
|             <intent-filter android:label="@string/play_with_app_name"> | ||||
|                 <action android:name="android.intent.action.SEND" /> | ||||
| 
 | ||||
|                 <category android:name="android.intent.category.DEFAULT" /> | ||||
| 
 | ||||
|                 <data android:mimeType="*/*" /> | ||||
|             </intent-filter> | ||||
|         </activity> | ||||
|  | @ -84,7 +87,6 @@ | |||
|                 <category android:name="android.intent.category.LAUNCHER" /> | ||||
|                 <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> | ||||
|             </intent-filter> | ||||
| 
 | ||||
|             <intent-filter> | ||||
|                 <action android:name="android.intent.action.VIEW" /> | ||||
| 
 | ||||
|  | @ -114,6 +116,10 @@ | |||
|             </intent-filter> | ||||
|         </activity> | ||||
| 
 | ||||
|         <activity | ||||
|             android:name=".ui.EasterEggMonke" | ||||
|             android:exported="true" /> | ||||
| 
 | ||||
|         <receiver | ||||
|             android:name=".receivers.VideoDownloadRestartReceiver" | ||||
|             android:enabled="false" | ||||
|  | @ -122,6 +128,7 @@ | |||
|                 <action android:name="restart_service" /> | ||||
|             </intent-filter> | ||||
|         </receiver> | ||||
| 
 | ||||
|         <service | ||||
|             android:name=".services.VideoDownloadService" | ||||
|             android:enabled="true" | ||||
|  | @ -142,4 +149,5 @@ | |||
|                 android:resource="@xml/provider_paths" /> | ||||
|         </provider> | ||||
|     </application> | ||||
| 
 | ||||
| </manifest> | ||||
|  | @ -0,0 +1,96 @@ | |||
| // https://github.com/googlecodelabs/android-kotlin-animation-property-animation/tree/master/begin | ||||
| 
 | ||||
| package com.lagradost.cloudstream3.ui | ||||
| 
 | ||||
| import android.animation.Animator | ||||
| import android.animation.AnimatorListenerAdapter | ||||
| import android.animation.AnimatorSet | ||||
| import android.animation.ObjectAnimator | ||||
| import android.os.Bundle | ||||
| import android.os.Handler | ||||
| import android.view.View | ||||
| import android.view.animation.AccelerateInterpolator | ||||
| import android.view.animation.LinearInterpolator | ||||
| import android.widget.FrameLayout | ||||
| import androidx.appcompat.app.AppCompatActivity | ||||
| import androidx.appcompat.widget.AppCompatImageView | ||||
| import androidx.core.view.isVisible | ||||
| import com.lagradost.cloudstream3.R | ||||
| import kotlinx.android.synthetic.main.activity_easter_egg_monke.* | ||||
| import java.util.* | ||||
| 
 | ||||
| class EasterEggMonke : AppCompatActivity() { | ||||
| 
 | ||||
|     override fun onCreate(savedInstanceState: Bundle?) { | ||||
|         super.onCreate(savedInstanceState) | ||||
|         setContentView(R.layout.activity_easter_egg_monke) | ||||
| 
 | ||||
|         val handler = Handler(mainLooper) | ||||
|         lateinit var runnable: Runnable | ||||
|         runnable = Runnable { | ||||
|             shower() | ||||
|             handler.postDelayed(runnable, 300) | ||||
|         } | ||||
|         handler.postDelayed(runnable, 1000) | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     private fun shower() { | ||||
| 
 | ||||
|         val containerW = frame.width | ||||
|         val containerH = frame.height | ||||
|         var starW: Float = monke.width.toFloat() | ||||
|         var starH: Float = monke.height.toFloat() | ||||
| 
 | ||||
|         val newStar = AppCompatImageView(this) | ||||
|         val idx = (monkeys.size * Math.random()).toInt() | ||||
|         newStar.setImageResource(monkeys[idx]) | ||||
|         newStar.isVisible = true | ||||
|         newStar.layoutParams = FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, | ||||
|             FrameLayout.LayoutParams.WRAP_CONTENT) | ||||
|         frame.addView(newStar) | ||||
| 
 | ||||
|         newStar.scaleX = Math.random().toFloat() * 1.5f +  newStar.scaleX | ||||
|         newStar.scaleY = newStar.scaleX | ||||
|         starW *= newStar.scaleX | ||||
|         starH *= newStar.scaleY | ||||
| 
 | ||||
|         newStar.translationX = Math.random().toFloat() * containerW - starW / 2 | ||||
| 
 | ||||
|         val mover = ObjectAnimator.ofFloat(newStar, View.TRANSLATION_Y, -starH, containerH + starH) | ||||
|         mover.interpolator = AccelerateInterpolator(1f) | ||||
| 
 | ||||
|         val rotator = ObjectAnimator.ofFloat(newStar, View.ROTATION, | ||||
|             (Math.random() * 1080).toFloat()) | ||||
|         rotator.interpolator = LinearInterpolator() | ||||
| 
 | ||||
|         val set = AnimatorSet() | ||||
|         set.playTogether(mover, rotator) | ||||
|         set.duration = (Math.random() * 1500 + 2500).toLong() | ||||
| 
 | ||||
|         set.addListener(object : AnimatorListenerAdapter() { | ||||
|             override fun onAnimationEnd(animation: Animator?) { | ||||
|                 frame.removeView(newStar) | ||||
|             } | ||||
|         }) | ||||
| 
 | ||||
|         set.start() | ||||
|     } | ||||
| 
 | ||||
|     companion object { | ||||
|         val monkeys = listOf( | ||||
|             R.drawable.monke_benene, | ||||
|             R.drawable.monke_burrito, | ||||
|             R.drawable.monke_coco, | ||||
|             R.drawable.monke_cookie, | ||||
|             R.drawable.monke_flusdered, | ||||
|             R.drawable.monke_funny, | ||||
|             R.drawable.monke_like, | ||||
|             R.drawable.monke_party, | ||||
|             R.drawable.monke_sob, | ||||
|             R.drawable.monke_drink, | ||||
|             R.drawable.benene, | ||||
|             R.drawable.ic_launcher_foreground | ||||
|         ) | ||||
|     } | ||||
| } | ||||
|  | @ -23,6 +23,7 @@ import com.lagradost.cloudstream3.app | |||
| import com.lagradost.cloudstream3.mvvm.logError | ||||
| import com.lagradost.cloudstream3.mvvm.normalSafeApiCall | ||||
| import com.lagradost.cloudstream3.network.initClient | ||||
| import com.lagradost.cloudstream3.ui.EasterEggMonke | ||||
| import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.getPref | ||||
| import com.lagradost.cloudstream3.ui.settings.SettingsFragment.Companion.setUpToolbar | ||||
| import com.lagradost.cloudstream3.utils.SingleSelectionHelper.showBottomDialog | ||||
|  | @ -271,6 +272,10 @@ class SettingsGeneral : PreferenceFragmentCompat() { | |||
|                 pref.setOnPreferenceClickListener { | ||||
|                     try { | ||||
|                         SettingsFragment.beneneCount++ | ||||
|                         if (SettingsFragment.beneneCount%20 == 0) { | ||||
|                             val intent = Intent(context, EasterEggMonke::class.java) | ||||
|                             startActivity(intent) | ||||
|                         } | ||||
|                         settingsManager.edit().putInt( | ||||
|                             getString(R.string.benene_count), | ||||
|                             SettingsFragment.beneneCount | ||||
|  |  | |||
							
								
								
									
										47
									
								
								app/src/main/res/layout/activity_easter_egg_monke.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								app/src/main/res/layout/activity_easter_egg_monke.xml
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,47 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <!-- | ||||
|   ~ Copyright (C) 2019 The Android Open Source Project | ||||
|   ~ 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 | ||||
|   ~      http://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. | ||||
|   --> | ||||
| 
 | ||||
| <androidx.constraintlayout.widget.ConstraintLayout | ||||
|     xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:tools="http://schemas.android.com/tools" | ||||
|     xmlns:app="http://schemas.android.com/apk/res-auto" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="match_parent" | ||||
|     tools:context=".MainActivity"> | ||||
| 
 | ||||
|     <FrameLayout | ||||
|         android:id="@+id/frame" | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="0dp" | ||||
|         android:background="@color/black" | ||||
|         app:layout_constraintBottom_toBottomOf="parent" | ||||
|         app:layout_constraintEnd_toEndOf="parent" | ||||
|         app:layout_constraintStart_toStartOf="parent" | ||||
|         app:layout_constraintTop_toTopOf="parent" | ||||
|         app:layout_constraintVertical_bias="0.0"> | ||||
| 
 | ||||
|         <ImageView | ||||
|             android:id="@+id/monke" | ||||
|             android:layout_width="wrap_content" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:layout_gravity="center" | ||||
|             android:scaleX="3" | ||||
|             android:scaleY="3" | ||||
|             android:visibility="gone" | ||||
|             app:srcCompat="@drawable/monke_benene" | ||||
|             tools:visibility="visible" /> | ||||
| 
 | ||||
|     </FrameLayout> | ||||
| 
 | ||||
| </androidx.constraintlayout.widget.ConstraintLayout> | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue