├── .github
├── CHANGELOG_POSTFIX.md
├── FUNDING.yml
└── workflows
│ ├── build.yml
│ └── crowdin-contributors.yml
├── .gitignore
├── .gitmodules
├── .idea
└── gradle.xml
├── BUILD_ROOT.md
├── Gemfile
├── Gemfile.lock
├── LICENSE
├── README.md
├── app
├── .gitignore
├── build.gradle.kts
├── google-services.json
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── me
│ │ └── timschneeberger
│ │ └── rootlessjamesdsp
│ │ └── ExampleInstrumentedTest.kt
│ ├── debug
│ └── res
│ │ ├── mipmap-anydpi-v26
│ │ └── ic_dsp_launcher.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_dsp_launcher.png
│ │ ├── ic_dsp_launcher_background.png
│ │ └── ic_dsp_launcher_foreground.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_dsp_launcher.png
│ │ ├── ic_dsp_launcher_background.png
│ │ └── ic_dsp_launcher_foreground.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_dsp_launcher.png
│ │ ├── ic_dsp_launcher_background.png
│ │ └── ic_dsp_launcher_foreground.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_dsp_launcher.png
│ │ ├── ic_dsp_launcher_background.png
│ │ └── ic_dsp_launcher_foreground.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_dsp_launcher.png
│ │ ├── ic_dsp_launcher_background.png
│ │ └── ic_dsp_launcher_foreground.png
│ │ └── values
│ │ └── debug.xml
│ ├── fdroid
│ ├── AndroidManifest.xml
│ └── java
│ │ └── me
│ │ └── timschneeberger
│ │ └── rootlessjamesdsp
│ │ └── flavor
│ │ └── CrashlyticsImpl.kt
│ ├── full
│ └── java
│ │ └── me
│ │ └── timschneeberger
│ │ └── rootlessjamesdsp
│ │ └── flavor
│ │ └── CrashlyticsImpl.kt
│ ├── main
│ ├── AndroidManifest.xml
│ ├── assets
│ │ ├── Convolver
│ │ │ ├── Church.wav
│ │ │ ├── CorredHRTF_Crossfeed.wav
│ │ │ ├── CorredHRTF_Surround1.wav
│ │ │ ├── CorredHRTF_Surround2.wav
│ │ │ └── SwapChannels.wav
│ │ ├── DDC
│ │ │ ├── Butterworth.vdc
│ │ │ ├── FrontRearContrast.vdc
│ │ │ └── mh750.vdc
│ │ └── Liveprog
│ │ │ ├── 3bandSplitting.eel
│ │ │ ├── 8bandSplitting.eel
│ │ │ ├── Joe0Bloggs DRX10K compander-HR.eel
│ │ │ ├── audioGlitchGenerator.eel
│ │ │ ├── autoWideness.eel
│ │ │ ├── autopeakfilter.eel
│ │ │ ├── butterworth3Band.eel
│ │ │ ├── butterworth8Band.eel
│ │ │ ├── dc_remove.eel
│ │ │ ├── decimate.eel
│ │ │ ├── delayChorus.eel
│ │ │ ├── depthsurround.eel
│ │ │ ├── downmixer.eel
│ │ │ ├── fftConvolution2x4x2.eel
│ │ │ ├── fftConvolutionHRTF.eel
│ │ │ ├── firFilter.eel
│ │ │ ├── firlsProc.eel
│ │ │ ├── fractionalDelayline.eel
│ │ │ ├── gainControl.eel
│ │ │ ├── hadamVerb.eel
│ │ │ ├── highpass.eel
│ │ │ ├── lofiDistortionMangler.eel
│ │ │ ├── lowpass.eel
│ │ │ ├── metallic-reverb.eel
│ │ │ ├── msCentreBoost.eel
│ │ │ ├── phaseshifter.eel
│ │ │ ├── pitchDownshift.eel
│ │ │ ├── polyphaseFilterbank.eel
│ │ │ ├── polyphaseFilterbankEqualization.eel
│ │ │ ├── stereoFieldManipulator.eel
│ │ │ ├── stereoPhaseInvert.eel
│ │ │ ├── stereowide.eel
│ │ │ ├── stftCentreBoost.eel
│ │ │ ├── stftCentreCut.eel
│ │ │ ├── stftDenoise.eel
│ │ │ ├── stftFilter.eel
│ │ │ ├── swapChannels.eel
│ │ │ ├── timeAdjustment.eel
│ │ │ ├── viper_dynamicbass.eel
│ │ │ └── viper_dynamicbass_preset.eel
│ ├── cpp
│ │ ├── CMakeLists.txt
│ │ ├── EELStdOutExtension.c
│ │ ├── EELStdOutExtension.h
│ │ ├── libcrashlytics-connector
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Log.cpp
│ │ │ ├── Log.h
│ │ │ └── crashlytics.h
│ │ ├── libjamesdsp-wrapper
│ │ │ ├── CMakeLists.txt
│ │ │ ├── EelVmVariable.cpp
│ │ │ ├── EelVmVariable.h
│ │ │ ├── IJavaObject.h
│ │ │ ├── JArrayList.cpp
│ │ │ ├── JArrayList.h
│ │ │ ├── JamesDspWrapper.cpp
│ │ │ └── JamesDspWrapper.h
│ │ └── libjdspimptoolbox
│ │ │ ├── CMakeLists.txt
│ │ │ ├── dr_flac.h
│ │ │ ├── dr_mp3.h
│ │ │ ├── dr_wav.h
│ │ │ ├── libsamplerate
│ │ │ ├── common.h
│ │ │ ├── config.h
│ │ │ ├── float_cast.h
│ │ │ ├── samplerate.c
│ │ │ ├── samplerate.h
│ │ │ ├── src_linear.c
│ │ │ └── src_sinc.c
│ │ │ └── main
│ │ │ ├── JdspImpResToolbox.c
│ │ │ ├── cpthread.c
│ │ │ └── cpthread.h
│ ├── java
│ │ └── me
│ │ │ └── timschneeberger
│ │ │ └── rootlessjamesdsp
│ │ │ ├── MainApplication.kt
│ │ │ ├── activity
│ │ │ ├── AeqSelectorActivity.kt
│ │ │ ├── AppCompatibilityActivity.kt
│ │ │ ├── BaseActivity.kt
│ │ │ ├── BlocklistActivity.kt
│ │ │ ├── EngineLauncherActivity.kt
│ │ │ ├── GraphicEqualizerActivity.kt
│ │ │ ├── LiveprogEditorActivity.kt
│ │ │ ├── LiveprogParamsActivity.kt
│ │ │ ├── MainActivity.kt
│ │ │ ├── OnboardingActivity.kt
│ │ │ └── SettingsActivity.kt
│ │ │ ├── adapter
│ │ │ ├── AppBlocklistAdapter.kt
│ │ │ ├── AppsListAdapter.kt
│ │ │ ├── AutoEqResultAdapter.kt
│ │ │ ├── CustomCodeViewAdapter.kt
│ │ │ ├── GraphicEqNodeAdapter.kt
│ │ │ ├── RoundedRipplePreferenceGroupAdapter.kt
│ │ │ └── ThemesPreferenceAdapter.kt
│ │ │ ├── api
│ │ │ ├── AutoEqClient.kt
│ │ │ ├── AutoEqService.kt
│ │ │ └── UserAgentInterceptor.kt
│ │ │ ├── backup
│ │ │ ├── BackupCreatorJob.kt
│ │ │ ├── BackupManager.kt
│ │ │ ├── BackupNotifier.kt
│ │ │ └── BackupRestoreService.kt
│ │ │ ├── contract
│ │ │ └── AutoEqSelectorContract.kt
│ │ │ ├── delegates
│ │ │ └── ThemingDelegate.kt
│ │ │ ├── editor
│ │ │ ├── plugin
│ │ │ │ ├── SourcePositionListener.kt
│ │ │ │ └── UndoRedoManager.kt
│ │ │ ├── syntax
│ │ │ │ ├── Constant.kt
│ │ │ │ ├── EelLanguage.kt
│ │ │ │ └── Function.kt
│ │ │ └── widget
│ │ │ │ └── SymbolInputView.kt
│ │ │ ├── fragment
│ │ │ ├── AppCompatibilityFragment.kt
│ │ │ ├── AppsListFragment.kt
│ │ │ ├── BlocklistFragment.kt
│ │ │ ├── CompanderDialogFragment.kt
│ │ │ ├── DeviceProfilesCardFragment.kt
│ │ │ ├── DspFragment.kt
│ │ │ ├── EqualizerDialogFragment.kt
│ │ │ ├── FileLibraryDialogFragment.kt
│ │ │ ├── GraphicEqualizerFragment.kt
│ │ │ ├── LibraryLoadErrorFragment.kt
│ │ │ ├── LimitationsFragment.kt
│ │ │ ├── LiveprogParamsFragment.kt
│ │ │ ├── OnboardingFragment.kt
│ │ │ ├── PreferenceGroupFragment.kt
│ │ │ └── settings
│ │ │ │ ├── SettingsAboutFragment.kt
│ │ │ │ ├── SettingsAppearanceFragment.kt
│ │ │ │ ├── SettingsAudioFormatFragment.kt
│ │ │ │ ├── SettingsBackupFragment.kt
│ │ │ │ ├── SettingsBaseFragment.kt
│ │ │ │ ├── SettingsDeviceProfilesFragment.kt
│ │ │ │ ├── SettingsFragment.kt
│ │ │ │ ├── SettingsMiscFragment.kt
│ │ │ │ └── SettingsTroubleshootingFragment.kt
│ │ │ ├── interop
│ │ │ ├── BenchmarkManager.kt
│ │ │ ├── JamesDspBaseEngine.kt
│ │ │ ├── JamesDspLocalEngine.kt
│ │ │ ├── JamesDspRemoteEngine.kt
│ │ │ ├── JamesDspWrapper.kt
│ │ │ ├── JdspImpResToolbox.kt
│ │ │ ├── PreferenceCache.kt
│ │ │ ├── ProcessorMessageHandler.kt
│ │ │ └── structure
│ │ │ │ └── EelVmVariable.kt
│ │ │ ├── liveprog
│ │ │ ├── EelBaseProperty.kt
│ │ │ ├── EelListProperty.kt
│ │ │ ├── EelNumberRangeProperty.kt
│ │ │ ├── EelParser.kt
│ │ │ ├── EelPropertyFactory.kt
│ │ │ └── IPropertyCompanion.kt
│ │ │ ├── model
│ │ │ ├── AppInfo.kt
│ │ │ ├── AudioSessionDumpEntry.kt
│ │ │ ├── GraphicEqNode.kt
│ │ │ ├── GraphicEqNodeList.kt
│ │ │ ├── IEffectSession.kt
│ │ │ ├── ItemViewModel.kt
│ │ │ ├── ProcessorMessage.kt
│ │ │ ├── Translator.kt
│ │ │ ├── api
│ │ │ │ └── AeqSearchResult.kt
│ │ │ ├── preference
│ │ │ │ ├── AppTheme.kt
│ │ │ │ ├── AudioEncoding.kt
│ │ │ │ ├── SessionUpdateMode.kt
│ │ │ │ └── ThemeMode.kt
│ │ │ ├── preset
│ │ │ │ └── Preset.kt
│ │ │ ├── room
│ │ │ │ ├── AppBlocklistDao.kt
│ │ │ │ ├── AppBlocklistDatabase.kt
│ │ │ │ ├── AppBlocklistRepository.kt
│ │ │ │ ├── AppBlocklistViewModel.kt
│ │ │ │ └── BlockedApp.kt
│ │ │ ├── root
│ │ │ │ └── RemoteEffectSession.kt
│ │ │ └── rootless
│ │ │ │ ├── MutedEffectSession.kt
│ │ │ │ └── SessionRecordingPolicyEntry.kt
│ │ │ ├── preference
│ │ │ ├── AppIconPreference.kt
│ │ │ ├── CompanderPreference.kt
│ │ │ ├── DropDownPreference.kt
│ │ │ ├── EqualizerPreference.kt
│ │ │ ├── FileLibraryPreference.kt
│ │ │ ├── GraphicEqualizerPreference.kt
│ │ │ ├── IconPreference.kt
│ │ │ ├── MaterialSeekbarPreference.kt
│ │ │ ├── MaterialSwitchPreference.kt
│ │ │ ├── SwitchPreferenceGroup.kt
│ │ │ └── ThemesPreference.kt
│ │ │ ├── receiver
│ │ │ ├── BootCompletedReceiver.kt
│ │ │ ├── PowerStateReceiver.kt
│ │ │ └── SessionReceiver.kt
│ │ │ ├── service
│ │ │ ├── BaseAudioProcessorService.kt
│ │ │ ├── NotificationListenerService.kt
│ │ │ ├── QuickTileService.kt
│ │ │ ├── RootAudioProcessorService.kt
│ │ │ └── RootlessAudioProcessorService.kt
│ │ │ ├── session
│ │ │ ├── dump
│ │ │ │ ├── DebugDumpFileProvider.kt
│ │ │ │ ├── DumpManager.kt
│ │ │ │ ├── data
│ │ │ │ │ ├── AudioPolicyServiceDump.kt
│ │ │ │ │ ├── AudioServiceDump.kt
│ │ │ │ │ ├── IDump.kt
│ │ │ │ │ ├── ISessionInfoDump.kt
│ │ │ │ │ ├── ISessionPolicyInfoDump.kt
│ │ │ │ │ └── PackageServiceDump.kt
│ │ │ │ ├── provider
│ │ │ │ │ ├── AudioFlingerServiceDumpProvider.kt
│ │ │ │ │ ├── AudioPolicyServiceDumpProvider.kt
│ │ │ │ │ ├── AudioServiceDumpProvider.kt
│ │ │ │ │ ├── IDumpProvider.kt
│ │ │ │ │ ├── ISessionDumpProvider.kt
│ │ │ │ │ ├── ISessionPolicyDumpProvider.kt
│ │ │ │ │ └── PackageServiceDumpProvider.kt
│ │ │ │ └── utils
│ │ │ │ │ ├── AudioFlingerServiceDumpUtils.kt
│ │ │ │ │ └── DumpUtils.kt
│ │ │ ├── root
│ │ │ │ ├── RootSessionDatabase.kt
│ │ │ │ └── RootSessionDumpManager.kt
│ │ │ ├── rootless
│ │ │ │ ├── RootlessSessionDatabase.kt
│ │ │ │ ├── RootlessSessionManager.kt
│ │ │ │ └── SessionRecordingPolicyManager.kt
│ │ │ └── shared
│ │ │ │ ├── BaseSessionDatabase.kt
│ │ │ │ └── BaseSessionManager.kt
│ │ │ ├── utils
│ │ │ ├── Constants.kt
│ │ │ ├── EngineUtils.kt
│ │ │ ├── FlavorConditionals.kt
│ │ │ ├── MutedAudioEffectFactory.kt
│ │ │ ├── ProfileManager.kt
│ │ │ ├── Result.kt
│ │ │ ├── RoutingObserver.kt
│ │ │ ├── SdkCheck.kt
│ │ │ ├── extensions
│ │ │ │ ├── ApiExtensions.kt
│ │ │ │ ├── AssetManagerExtensions.kt
│ │ │ │ ├── AudioEffectExtensions.kt
│ │ │ │ ├── CompatExtensions.kt
│ │ │ │ ├── ContextExtensions.kt
│ │ │ │ ├── MiscUtils.kt
│ │ │ │ ├── NotificationExtensions.kt
│ │ │ │ └── PermissionExtensions.kt
│ │ │ ├── notifications
│ │ │ │ ├── Notifications.kt
│ │ │ │ └── ServiceNotificationHelper.kt
│ │ │ ├── preferences
│ │ │ │ ├── NonPersistentDatastore.kt
│ │ │ │ └── Preferences.kt
│ │ │ └── storage
│ │ │ │ ├── Cache.kt
│ │ │ │ ├── StorageUtils.kt
│ │ │ │ └── Tar.kt
│ │ │ └── view
│ │ │ ├── BaseEqualizerSurface.kt
│ │ │ ├── Card.kt
│ │ │ ├── CompanderSurface.kt
│ │ │ ├── EqualizerSurface.kt
│ │ │ ├── FloatingToggleButton.kt
│ │ │ ├── GraphicEqualizerSurface.kt
│ │ │ ├── NumberInputBox.kt
│ │ │ └── ProgressDialog.kt
│ └── res
│ │ ├── color
│ │ ├── selector_floating_toggle_foreground_tint.xml
│ │ └── selector_floating_toggle_tint.xml
│ │ ├── drawable
│ │ ├── ic_baseline_add_24dp.xml
│ │ ├── ic_baseline_arrow_collapse_24dp.xml
│ │ ├── ic_baseline_chart_timeline_variant_24dp.xml
│ │ ├── ic_baseline_code_tags_24dp.xml
│ │ ├── ic_baseline_cone_24dp.xml
│ │ ├── ic_baseline_cube_outline_24dp.xml
│ │ ├── ic_baseline_download_24dp.xml
│ │ ├── ic_baseline_equalizer_24dp.xml
│ │ ├── ic_baseline_find_replace_24dp.xml
│ │ ├── ic_baseline_format_size_24dp.xml
│ │ ├── ic_baseline_github_24dp.xml
│ │ ├── ic_baseline_google_play_24dp.xml
│ │ ├── ic_baseline_image_filter_tilt_shift_24dp.xml
│ │ ├── ic_baseline_keyboard_arrow_down_24dp.xml
│ │ ├── ic_baseline_keyboard_arrow_up_24dp.xml
│ │ ├── ic_baseline_led_outline_24dp.xml
│ │ ├── ic_baseline_play_arrow_24dp.xml
│ │ ├── ic_baseline_redo_24dp.xml
│ │ ├── ic_baseline_refresh_24dp.xml
│ │ ├── ic_baseline_sine_wave_24dp.xml
│ │ ├── ic_baseline_undo_24dp.xml
│ │ ├── ic_baseline_warning_24dp.xml
│ │ ├── ic_baseline_waveform_24dp.xml
│ │ ├── ic_close_24dp.xml
│ │ ├── ic_code_json.xml
│ │ ├── ic_function_variant.xml
│ │ ├── ic_key.xml
│ │ ├── ic_numeric_1_circle_outline.xml
│ │ ├── ic_numeric_2_circle_outline.xml
│ │ ├── ic_numeric_3_circle_outline.xml
│ │ ├── ic_numeric_4_circle_outline.xml
│ │ ├── ic_numeric_5_circle_outline.xml
│ │ ├── ic_numeric_6_circle_outline.xml
│ │ ├── ic_search_24dp.xml
│ │ ├── ic_tune_vertical_variant_24dp.xml
│ │ ├── ic_twotone_add_24dp.xml
│ │ ├── ic_twotone_app_blocking_24dp.xml
│ │ ├── ic_twotone_auto_fix_high_24.xml
│ │ ├── ic_twotone_bluetooth_24dp.xml
│ │ ├── ic_twotone_cable_24dp.xml
│ │ ├── ic_twotone_cast_24dp.xml
│ │ ├── ic_twotone_check_24dp.xml
│ │ ├── ic_twotone_check_circle_24dp.xml
│ │ ├── ic_twotone_chevron_right_24dp.xml
│ │ ├── ic_twotone_color_lens_24dp.xml
│ │ ├── ic_twotone_delete_24dp.xml
│ │ ├── ic_twotone_delete_forever_24dp.xml
│ │ ├── ic_twotone_device_unknown_24dp.xml
│ │ ├── ic_twotone_download_24.xml
│ │ ├── ic_twotone_edit_24dp.xml
│ │ ├── ic_twotone_error_24dp.xml
│ │ ├── ic_twotone_find_in_page_24dp.xml
│ │ ├── ic_twotone_folder_special_24dp.xml
│ │ ├── ic_twotone_headphones_24dp.xml
│ │ ├── ic_twotone_help_24dp.xml
│ │ ├── ic_twotone_history_24dp.xml
│ │ ├── ic_twotone_info_24dp.xml
│ │ ├── ic_twotone_launch_24dp.xml
│ │ ├── ic_twotone_mic_24dp.xml
│ │ ├── ic_twotone_more_horiz_24.xml
│ │ ├── ic_twotone_nodes_24dp.xml
│ │ ├── ic_twotone_notifications_24dp.xml
│ │ ├── ic_twotone_power_settings_24dp.xml
│ │ ├── ic_twotone_privacy_tip_24dp.xml
│ │ ├── ic_twotone_remove_24dp.xml
│ │ ├── ic_twotone_save_24dp.xml
│ │ ├── ic_twotone_search_24dp.xml
│ │ ├── ic_twotone_security_24dp.xml
│ │ ├── ic_twotone_settings_24dp.xml
│ │ ├── ic_twotone_settings_backup_restore_24dp.xml
│ │ ├── ic_twotone_settings_input_hdmi_24dp.xml
│ │ ├── ic_twotone_speaker_24dp.xml
│ │ ├── ic_twotone_translate_24dp.xml
│ │ ├── ic_twotone_troubleshoot_24dp.xml
│ │ ├── ic_twotone_usb_24dp.xml
│ │ ├── ic_twotone_volume_up_24dp.xml
│ │ ├── ic_twotone_warning_24dp.xml
│ │ ├── ic_welcome_24dp.xml
│ │ ├── ripple_rounded.xml
│ │ ├── shape_card_divider.xml
│ │ ├── shape_rounded_corners.xml
│ │ ├── shape_rounded_highlight.xml
│ │ └── shape_rounded_rectangle.xml
│ │ ├── font
│ │ └── jetbrainsmono.ttf
│ │ ├── layout-land
│ │ └── fragment_graphic_eq.xml
│ │ ├── layout
│ │ ├── activity_aeq_selector.xml
│ │ ├── activity_app_compatibility.xml
│ │ ├── activity_blocklist.xml
│ │ ├── activity_dsp_main.xml
│ │ ├── activity_graphic_eq.xml
│ │ ├── activity_liveprog_editor.xml
│ │ ├── activity_liveprog_params.xml
│ │ ├── activity_onboarding.xml
│ │ ├── activity_settings.xml
│ │ ├── content_main.xml
│ │ ├── dialog_editor_search_replace.xml
│ │ ├── dialog_filelibrary.xml
│ │ ├── dialog_progress.xml
│ │ ├── dialog_textinput.xml
│ │ ├── fragment_app_compatibility.xml
│ │ ├── fragment_applist_sheet.xml
│ │ ├── fragment_blocklist.xml
│ │ ├── fragment_dsp.xml
│ │ ├── fragment_graphic_eq.xml
│ │ ├── fragment_library_load_error.xml
│ │ ├── item_app_list.xml
│ │ ├── item_autoeq_profile_list.xml
│ │ ├── item_blocked_app_list.xml
│ │ ├── item_editor_autocomplete.xml
│ │ ├── item_geq_node_list.xml
│ │ ├── item_preset_list.xml
│ │ ├── onboarding_controls.xml
│ │ ├── onboarding_fragment.xml
│ │ ├── onboarding_page1.xml
│ │ ├── onboarding_page2.xml
│ │ ├── onboarding_page3.xml
│ │ ├── onboarding_page4.xml
│ │ ├── onboarding_page5.xml
│ │ ├── onboarding_page6.xml
│ │ ├── preference_alt.xml
│ │ ├── preference_appicon.xml
│ │ ├── preference_compander.xml
│ │ ├── preference_compander_dialog.xml
│ │ ├── preference_equalizer.xml
│ │ ├── preference_equalizer_dialog.xml
│ │ ├── preference_graphic_equalizer.xml
│ │ ├── preference_icon.xml
│ │ ├── preference_materialslider.xml
│ │ ├── preference_materialswitch.xml
│ │ ├── preference_switchgroup.xml
│ │ ├── preference_theme_item.xml
│ │ ├── preference_themes_list.xml
│ │ ├── view_card.xml
│ │ └── view_number_input_box.xml
│ │ ├── menu
│ │ ├── menu_filelibrary_add_context.xml
│ │ ├── menu_filelibrary_context.xml
│ │ ├── menu_liveprog_editor.xml
│ │ ├── menu_liveprog_params.xml
│ │ ├── menu_main_bottom.xml
│ │ └── menu_main_bottom_left.xml
│ │ ├── mipmap-anydpi-v26
│ │ └── ic_dsp_launcher.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_dsp_launcher.png
│ │ ├── ic_dsp_launcher_background.png
│ │ ├── ic_dsp_launcher_foreground.png
│ │ └── ic_dsp_launcher_monochrome.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_dsp_launcher.png
│ │ ├── ic_dsp_launcher_background.png
│ │ ├── ic_dsp_launcher_foreground.png
│ │ └── ic_dsp_launcher_monochrome.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_dsp_launcher.png
│ │ ├── ic_dsp_launcher_background.png
│ │ ├── ic_dsp_launcher_foreground.png
│ │ └── ic_dsp_launcher_monochrome.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_dsp_launcher.png
│ │ ├── ic_dsp_launcher_background.png
│ │ ├── ic_dsp_launcher_foreground.png
│ │ └── ic_dsp_launcher_monochrome.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_dsp_launcher.png
│ │ ├── ic_dsp_launcher_background.png
│ │ ├── ic_dsp_launcher_foreground.png
│ │ └── ic_dsp_launcher_monochrome.png
│ │ ├── navigation
│ │ ├── nav_main.xml
│ │ └── nav_onboarding.xml
│ │ ├── raw
│ │ └── translators.json
│ │ ├── values-af-rZA
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-ar-rSA
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-az-rAZ
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-bg-rBG
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-ca-rES
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-cs-rCZ
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-da-rDK
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-de-rDE
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-el-rGR
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-es-rES
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-fa-rIR
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-fi-rFI
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-fr-rFR
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-hi-rIN
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-hr-rHR
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-hu-rHU
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-in-rID
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-it-rIT
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-iw-rIL
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-ja-rJP
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-ko-rKR
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-lt-rLT
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-lv-rLV
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-ms-rMY
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-night-v31
│ │ └── themes.xml
│ │ ├── values-night
│ │ ├── colors.xml
│ │ ├── colors_greenapple.xml
│ │ ├── colors_honey.xml
│ │ ├── colors_strawberry.xml
│ │ ├── colors_tealturqoise.xml
│ │ ├── colors_tidalwave.xml
│ │ ├── colors_yinyang.xml
│ │ ├── colors_yotsuba.xml
│ │ └── themes.xml
│ │ ├── values-nl-rNL
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-no-rNO
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-pl-rPL
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-pt-rBR
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-pt-rPT
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-ro-rRO
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-ru-rRU
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-sk-rSK
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-sl-rSI
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-sr-rSP
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-sv-rSE
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-th-rTH
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-tr-rTR
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-uk-rUA
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-v29
│ │ └── themes.xml
│ │ ├── values-v31
│ │ └── themes.xml
│ │ ├── values-vi-rVN
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-zh-rCN
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values-zh-rTW
│ │ ├── plurals.xml
│ │ └── strings.xml
│ │ ├── values
│ │ ├── arrays.xml
│ │ ├── attrs.xml
│ │ ├── colors.xml
│ │ ├── colors_greenapple.xml
│ │ ├── colors_honey.xml
│ │ ├── colors_strawberry.xml
│ │ ├── colors_tealturqoise.xml
│ │ ├── colors_tidalwave.xml
│ │ ├── colors_yinyang.xml
│ │ ├── colors_yotsuba.xml
│ │ ├── defaults.xml
│ │ ├── dimens.xml
│ │ ├── keys.xml
│ │ ├── plurals.xml
│ │ ├── strings.xml
│ │ └── themes.xml
│ │ └── xml
│ │ ├── app_about_preferences.xml
│ │ ├── app_appearance_preferences.xml
│ │ ├── app_audio_format_preferences.xml
│ │ ├── app_backup_preferences.xml
│ │ ├── app_device_profiles_preferences.xml
│ │ ├── app_misc_preferences.xml
│ │ ├── app_preferences.xml
│ │ ├── app_troubleshooting_preferences.xml
│ │ ├── backup_rules.xml
│ │ ├── data_extraction_rules.xml
│ │ ├── device_profile_preferences.xml
│ │ ├── dsp_bass_preferences.xml
│ │ ├── dsp_compander_preferences.xml
│ │ ├── dsp_convolver_preferences.xml
│ │ ├── dsp_crossfeed_preferences.xml
│ │ ├── dsp_ddc_preferences.xml
│ │ ├── dsp_equalizer_preferences.xml
│ │ ├── dsp_graphiceq_preferences.xml
│ │ ├── dsp_liveprog_preferences.xml
│ │ ├── dsp_output_control_preferences.xml
│ │ ├── dsp_reverb_preferences.xml
│ │ ├── dsp_stereowide_preferences.xml
│ │ ├── dsp_tube_preferences.xml
│ │ ├── provider_dump_paths.xml
│ │ └── provider_filelibrary_paths.xml
│ ├── plugin
│ ├── AndroidManifest.xml
│ └── java
│ │ └── me
│ │ └── timschneeberger
│ │ └── rootlessjamesdsp
│ │ └── flavor
│ │ ├── JamesDspBasePlugin.kt
│ │ ├── RootShellImpl.kt
│ │ └── UpdateManager.kt
│ ├── preview
│ └── google-services.json
│ ├── root
│ ├── AndroidManifest.xml
│ └── java
│ │ └── me
│ │ └── timschneeberger
│ │ └── rootlessjamesdsp
│ │ └── flavor
│ │ ├── RootShellImpl.kt
│ │ ├── UpdateManager.kt
│ │ └── updates
│ │ ├── SessionInstaller.kt
│ │ ├── SessionInstallerService.kt
│ │ ├── api
│ │ ├── UpdateCheckClient.kt
│ │ └── UpdateCheckService.kt
│ │ └── model
│ │ └── UpdateCheckResponse.kt
│ ├── rootless
│ └── java
│ │ └── me
│ │ └── timschneeberger
│ │ └── rootlessjamesdsp
│ │ └── flavor
│ │ ├── RootShellImpl.kt
│ │ └── UpdateManager.kt
│ └── test
│ └── java
│ └── me
│ └── timschneeberger
│ └── rootlessjamesdsp
│ └── ExampleUnitTest.kt
├── build.gradle.kts
├── buildSrc
├── .gitignore
├── build.gradle.kts
└── src
│ └── main
│ └── kotlin
│ ├── AndroidConfig.kt
│ └── Commands.kt
├── codeview
├── .gitignore
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ └── java
│ └── com
│ └── amrdeveloper
│ └── codeview
│ ├── Code.kt
│ ├── CodeView.kt
│ ├── CodeViewAdapter.kt
│ ├── Findable.kt
│ ├── Keyword.kt
│ ├── KeywordTokenizer.kt
│ ├── Replaceable.kt
│ ├── Snippet.kt
│ └── Token.kt
├── crowdin.yml
├── fastlane
├── .gitignore
├── Appfile
├── Fastfile
├── NOTE.md
└── metadata
│ └── android
│ ├── af
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── ar
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── az-AZ
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── bg
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── ca
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── cs-CZ
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── da-DK
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── de-DE
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── el-GR
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── en-US
│ ├── changelogs
│ │ ├── 17.txt
│ │ ├── 18.txt
│ │ ├── 19.txt
│ │ ├── 20.txt
│ │ ├── 21.txt
│ │ ├── 22.txt
│ │ ├── 23.txt
│ │ ├── 24.txt
│ │ ├── 25.txt
│ │ ├── 26.txt
│ │ ├── 27.txt
│ │ ├── 28.txt
│ │ ├── 29.txt
│ │ ├── 30.txt
│ │ ├── 31.txt
│ │ ├── 32.txt
│ │ ├── 33.txt
│ │ ├── 34.txt
│ │ ├── 35.txt
│ │ ├── 37.txt
│ │ ├── 38.txt
│ │ ├── 39.txt
│ │ ├── 40.txt
│ │ ├── 41.txt
│ │ ├── 42.txt
│ │ ├── 43.txt
│ │ ├── 44.txt
│ │ ├── 45.txt
│ │ ├── 46.txt
│ │ ├── 47.txt
│ │ ├── 48.txt
│ │ ├── 49.txt
│ │ └── 50.txt
│ ├── full_description.txt
│ ├── images
│ │ ├── featureGraphic.png
│ │ ├── icon.png
│ │ └── phoneScreenshots
│ │ │ ├── 1_en-US.png
│ │ │ ├── 2_en-US.png
│ │ │ ├── 3_en-US.png
│ │ │ ├── 4_en-US.png
│ │ │ ├── 5_en-US.png
│ │ │ ├── 6_en-US.png
│ │ │ └── 7_en-US.png
│ ├── short_description.txt
│ └── title.txt
│ ├── es-ES
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── fa-IR
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── fi-FI
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── fr-FR
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── he-IL
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── hi-IN
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── hr-HR
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── hu-HU
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── id
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── it-IT
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── ja-JP
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── ko-KR
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── lt-LT
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── lv
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── ms-MY
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── nl-NL
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── no-NO
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── pl-PL
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── pt-BR
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── pt-PT
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── ro
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── ru-RU
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── sk
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── sl-SI
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── sr
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── sv-SE
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── th
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── tr-TR
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── uk
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── vi
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ ├── zh-CN
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
│ └── zh-TW
│ ├── full_description.txt
│ ├── short_description.txt
│ └── title.txt
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── hidden-api-impl
├── .gitignore
├── build.gradle.kts
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ └── java
│ ├── android
│ └── media
│ │ └── IAudioPolicyService.java
│ └── me
│ └── timschneeberger
│ └── hiddenapi_impl
│ ├── AudioPolicyService.java
│ ├── AudioSystem.java
│ ├── CapturePolicy.java
│ ├── ShizukuSystemServerApi.java
│ ├── Singleton.java
│ └── UserHandle.java
├── hidden-api-refined
├── .gitignore
├── build.gradle.kts
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ └── java
│ └── android
│ └── media
│ ├── AudioPlaybackConfigurationHidden.java
│ ├── audiofx
│ └── AudioEffectHidden.java
│ └── session
│ └── MediaSessionHidden.java
├── hidden-api-stubs
├── .gitignore
├── build.gradle.kts
└── src
│ └── main
│ └── java
│ ├── android
│ ├── annotation
│ │ ├── NonNull.java
│ │ ├── Nullable.java
│ │ └── UserIdInt.java
│ ├── os
│ │ ├── Binder.java
│ │ ├── IBinder.java
│ │ ├── IInterface.java
│ │ ├── Parcel.java
│ │ └── RemoteException.java
│ └── permission
│ │ └── IPermissionManager.java
│ ├── androidx
│ └── annotation
│ │ ├── IntRange.java
│ │ └── RequiresApi.java
│ └── com
│ └── android
│ └── internal
│ └── app
│ └── IAppOpsService.java
├── img
├── icon.svg
├── icon_no_shadow.svg
├── icons
│ ├── android
│ │ ├── play_store_512.png
│ │ └── res
│ │ │ ├── mipmap-anydpi-v26
│ │ │ └── ic_launcher.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_background.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_monochrome.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_background.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_monochrome.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_background.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_monochrome.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_background.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_monochrome.png
│ │ │ └── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_background.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_monochrome.png
│ ├── androidtv
│ │ └── res
│ │ │ └── drawable-xhdpi
│ │ │ └── tv_banner.png
│ ├── play-store
│ │ └── play_store_feature_graphic.png
│ └── web
│ │ ├── README.txt
│ │ ├── apple-touch-icon.png
│ │ ├── favicon.ico
│ │ ├── icon-192-maskable.png
│ │ ├── icon-192.png
│ │ ├── icon-512-maskable.png
│ │ └── icon-512.png
├── preview-res
│ ├── mipmap-anydpi-v26
│ │ └── ic_launcher.xml
│ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ └── ic_launcher_foreground.png
│ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ └── ic_launcher_foreground.png
│ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ └── ic_launcher_foreground.png
│ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ └── ic_launcher_foreground.png
│ └── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ └── ic_launcher_foreground.png
├── screenshot1.png
├── screenshot2.png
├── screenshot3.png
├── screenshot4.png
├── screenshot5.png
├── screenshot6.png
└── screenshot7.png
└── settings.gradle
/.github/CHANGELOG_POSTFIX.md:
--------------------------------------------------------------------------------
1 | ________
2 |
3 | ## Available on Google Play & F-Droid
4 |
5 | [
](https://play.google.com/store/apps/details?id=me.timschneeberger.rootlessjamesdsp&utm_source=github&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1)[
](https://f-droid.org/packages/me.timschneeberger.rootlessjamesdsp/)
10 |
11 |
12 | Download the application on Google Play:
13 |
14 | [https://play.google.com/store/apps/details?id=me.timschneeberger.rootlessjamesdsp](https://play.google.com/store/apps/details?id=me.timschneeberger.rootlessjamesdsp&utm_source=github&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1)
15 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | ko_fi: thepbone
2 | github: thepbone
3 | custom: https://paypal.me/timschneeberger
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea
5 | /.idea/caches
6 | /.idea/libraries
7 | /.idea/modules.xml
8 | /.idea/workspace.xml
9 | /.idea/navEditor.xml
10 | /.idea/assetWizardSettings.xml
11 | .DS_Store
12 | /build
13 | /captures
14 | .externalNativeBuild
15 | .cxx
16 | local.properties
17 | /hidden-refine-api/build/
18 | /app/src/main/cpp/libjamesdsp/Main/DSPManager/.idea
19 | /app/src/main/cpp/libjamesdsp/Main/DSPManager/DSPManager.iml
20 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "app/src/main/cpp/libjamesdsp"]
2 | path = app/src/main/cpp/libjamesdsp
3 | url = https://github.com/ThePBone/JamesDSPManager
4 | branch = extensions
5 | [submodule "cpp/libjamesdsp"]
6 | branch = extensions
7 |
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source "https://rubygems.org"
2 |
3 | gem "fastlane"
4 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | /rootlessFull/
3 | /rootlessFdroid/
4 | /rootFull/
5 | /rootFdroid/
6 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/me/timschneeberger/rootlessjamesdsp/ExampleInstrumentedTest.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp
2 |
3 | import androidx.test.platform.app.InstrumentationRegistry
4 | import androidx.test.ext.junit.runners.AndroidJUnit4
5 |
6 | import org.junit.Test
7 | import org.junit.runner.RunWith
8 |
9 | import org.junit.Assert.*
10 |
11 | /**
12 | * Instrumented test, which will execute on an Android device.
13 | *
14 | * See [testing documentation](http://d.android.com/tools/testing).
15 | */
16 | @RunWith(AndroidJUnit4::class)
17 | class ExampleInstrumentedTest {
18 | @Test
19 | fun useAppContext() {
20 | // Context of the app under test.
21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext
22 | assertEquals("me.timschneeberger.rootlessjamesdsp", appContext.packageName)
23 | }
24 | }
--------------------------------------------------------------------------------
/app/src/debug/res/mipmap-anydpi-v26/ic_dsp_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/debug/res/mipmap-hdpi/ic_dsp_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/debug/res/mipmap-hdpi/ic_dsp_launcher.png
--------------------------------------------------------------------------------
/app/src/debug/res/mipmap-hdpi/ic_dsp_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/debug/res/mipmap-hdpi/ic_dsp_launcher_background.png
--------------------------------------------------------------------------------
/app/src/debug/res/mipmap-hdpi/ic_dsp_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/debug/res/mipmap-hdpi/ic_dsp_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/debug/res/mipmap-mdpi/ic_dsp_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/debug/res/mipmap-mdpi/ic_dsp_launcher.png
--------------------------------------------------------------------------------
/app/src/debug/res/mipmap-mdpi/ic_dsp_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/debug/res/mipmap-mdpi/ic_dsp_launcher_background.png
--------------------------------------------------------------------------------
/app/src/debug/res/mipmap-mdpi/ic_dsp_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/debug/res/mipmap-mdpi/ic_dsp_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/debug/res/mipmap-xhdpi/ic_dsp_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/debug/res/mipmap-xhdpi/ic_dsp_launcher.png
--------------------------------------------------------------------------------
/app/src/debug/res/mipmap-xhdpi/ic_dsp_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/debug/res/mipmap-xhdpi/ic_dsp_launcher_background.png
--------------------------------------------------------------------------------
/app/src/debug/res/mipmap-xhdpi/ic_dsp_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/debug/res/mipmap-xhdpi/ic_dsp_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/debug/res/mipmap-xxhdpi/ic_dsp_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/debug/res/mipmap-xxhdpi/ic_dsp_launcher.png
--------------------------------------------------------------------------------
/app/src/debug/res/mipmap-xxhdpi/ic_dsp_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/debug/res/mipmap-xxhdpi/ic_dsp_launcher_background.png
--------------------------------------------------------------------------------
/app/src/debug/res/mipmap-xxhdpi/ic_dsp_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/debug/res/mipmap-xxhdpi/ic_dsp_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/debug/res/mipmap-xxxhdpi/ic_dsp_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/debug/res/mipmap-xxxhdpi/ic_dsp_launcher.png
--------------------------------------------------------------------------------
/app/src/debug/res/mipmap-xxxhdpi/ic_dsp_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/debug/res/mipmap-xxxhdpi/ic_dsp_launcher_background.png
--------------------------------------------------------------------------------
/app/src/debug/res/mipmap-xxxhdpi/ic_dsp_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/debug/res/mipmap-xxxhdpi/ic_dsp_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/debug/res/values/debug.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | false
4 |
--------------------------------------------------------------------------------
/app/src/fdroid/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/fdroid/java/me/timschneeberger/rootlessjamesdsp/flavor/CrashlyticsImpl.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("UNUSED_PARAMETER")
2 |
3 | package me.timschneeberger.rootlessjamesdsp.flavor
4 |
5 | // Stubbed
6 | object CrashlyticsImpl {
7 | fun setCollectionEnabled(on: Boolean) {}
8 | fun setCustomKey(key: String, value: String) {}
9 | fun setCustomKey(key: String, value: Int) {}
10 | fun log(msg: String) {}
11 | fun recordException(t: Throwable) {}
12 | fun sendUnsentReports() {}
13 | }
--------------------------------------------------------------------------------
/app/src/full/java/me/timschneeberger/rootlessjamesdsp/flavor/CrashlyticsImpl.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.flavor
2 |
3 | import com.google.firebase.crashlytics.ktx.crashlytics
4 | import com.google.firebase.ktx.Firebase
5 |
6 | object CrashlyticsImpl {
7 | fun setCollectionEnabled(on: Boolean) = Firebase.crashlytics.setCrashlyticsCollectionEnabled(on)
8 | fun setCustomKey(key: String, value: String) = Firebase.crashlytics.setCustomKey(key, value)
9 | fun setCustomKey(key: String, value: Int) = Firebase.crashlytics.setCustomKey(key, value)
10 | fun log(msg: String) = Firebase.crashlytics.log(msg)
11 | fun recordException(t: Throwable) = Firebase.crashlytics.recordException(t)
12 | fun sendUnsentReports() = Firebase.crashlytics.sendUnsentReports()
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/assets/Convolver/Church.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/assets/Convolver/Church.wav
--------------------------------------------------------------------------------
/app/src/main/assets/Convolver/CorredHRTF_Crossfeed.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/assets/Convolver/CorredHRTF_Crossfeed.wav
--------------------------------------------------------------------------------
/app/src/main/assets/Convolver/CorredHRTF_Surround1.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/assets/Convolver/CorredHRTF_Surround1.wav
--------------------------------------------------------------------------------
/app/src/main/assets/Convolver/CorredHRTF_Surround2.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/assets/Convolver/CorredHRTF_Surround2.wav
--------------------------------------------------------------------------------
/app/src/main/assets/Convolver/SwapChannels.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/assets/Convolver/SwapChannels.wav
--------------------------------------------------------------------------------
/app/src/main/assets/Liveprog/butterworth3Band.eel:
--------------------------------------------------------------------------------
1 | desc: Butterworth 3 bands (Equalization example)
2 |
3 | //tags: iir
4 |
5 | @init
6 | iirBPS = 0;
7 | reqSize = IIRBandSplitterInit(iirBPS, srate, 4000, 12000);
8 | iirBPS2 = iirBPS + reqSize; // Shift the pointer
9 | reqSize = IIRBandSplitterInit(iirBPS2, srate, 4000, 12000);
10 | low1 = 0;
11 | mid1 = 0;
12 | high1 = 0;
13 | eqGain = iirBPS2 + reqSize; // Shift pointer again
14 | eqGain[0] = 1;
15 | eqGain[1] = 0;
16 | eqGain[2] = 1;
17 |
18 | @sample
19 | IIRBandSplitterProcess(iirBPS, spl0, low1, mid1, high1);
20 | IIRBandSplitterProcess(iirBPS, spl1, low2, mid2, high2);
21 | low1 *= eqGain[0];
22 | mid1 *= eqGain[1];
23 | high1 *= eqGain[2];
24 | low2 *= eqGain[0];
25 | mid2 *= eqGain[1];
26 | high2 *= eqGain[2];
27 | spl0 = low1 + mid1 + high1;
28 | spl1 = low2 + mid2 + high2;
--------------------------------------------------------------------------------
/app/src/main/assets/Liveprog/dc_remove.eel:
--------------------------------------------------------------------------------
1 | // This effect Copyright (C) 2004 and later Cockos Incorporated
2 | // License: GPL - http://www.gnu.org/licenses/gpl.html
3 | // based on the algorithm in Steve Harris's plug-in package: http://plugin.org.uk/
4 |
5 | desc:DC filter
6 | //tags: filter repair
7 | //author: Cockos
8 |
9 | @init
10 | itm1=itm2=otm1=otm2=0;
11 |
12 | @sample
13 | otm1=0.999*otm1 + spl0 - itm1;
14 | itm1=spl0;
15 | spl0=otm1;
16 | otm2=0.999*otm2 + spl1 - itm2;
17 | itm2=spl1;
18 | spl1=otm2;
19 |
--------------------------------------------------------------------------------
/app/src/main/assets/Liveprog/decimate.eel:
--------------------------------------------------------------------------------
1 | desc: Decimate
2 | //tags: distortion
3 |
4 | @init
5 | bits=16;
6 | rate=0.5;
7 |
8 | out=0;
9 | cnt=0;
10 | m=1<<(bits-1);
11 |
12 | function decimate(i)(
13 | cnt+=rate;
14 | cnt>=1 ? (
15 | cnt-=1;
16 | out=floor(i*m)/m;
17 | );
18 | out;
19 | );
20 |
21 | @sample
22 | tmp0 = decimate(spl0);
23 | tmp1 = decimate(spl1);
24 | spl0=tmp0;
25 | spl1=tmp1;
26 |
--------------------------------------------------------------------------------
/app/src/main/assets/Liveprog/downmixer.eel:
--------------------------------------------------------------------------------
1 | desc: Stereo to mono downmixer
2 |
3 | //tags: stereo
4 |
5 | @init
6 | ;
7 |
8 | @sample
9 | spl0 = spl1 = spl0 / 2 + spl1 / 2;
--------------------------------------------------------------------------------
/app/src/main/assets/Liveprog/firFilter.eel:
--------------------------------------------------------------------------------
1 | desc: FIR filtering
2 |
3 | //tags: fir filter
4 |
5 | @init
6 | coefficients = 0;
7 | hLen = importFLTFromStr("-0.000814106447125912,-0.00101893557539458,0.00439540510163513,0.0191817066643173,0.0348758447331096,0.0296722242827697,-0.00949579830159734,-0.0574346591733406,-0.0538264189367632,0.0446871259733802,0.207161817163176,0.333544729155861,0.333544729155861,0.207161817163176,0.0446871259733802,-0.0538264189367632,-0.0574346591733406,-0.00949579830159734,0.0296722242827697,0.0348758447331096,0.0191817066643173,0.00439540510163513,-0.00101893557539458,-0.000814106447125912", coefficients);
8 | ptr1 = coefficients + hLen;
9 | req = FIRInit(ptr1, hLen);
10 | ptr2 = ptr1 + req;
11 | req = FIRInit(ptr2, hLen);
12 |
13 | @sample
14 | spl0 = FIRProcess(ptr1, spl0, coefficients);
15 | spl1 = FIRProcess(ptr2, spl1, coefficients);
--------------------------------------------------------------------------------
/app/src/main/assets/Liveprog/fractionalDelayline.eel:
--------------------------------------------------------------------------------
1 | desc: Fractional delay line
2 | //tags: delay
3 |
4 | leftDelay:15.1<0,1024,0.1>Fractional delay L (samples)
5 | rightDelay:4.2<0,1024,0.1>Fractional delay R (samples)
6 |
7 | @init
8 | leftDelay = 15.1;
9 | rightDelay = 4.2;
10 |
11 | ptr1 = 0;
12 | req = fractionalDelayLineInit(ptr1, 1024);
13 | ptr2 = ptr1 + req;
14 | req = fractionalDelayLineInit(ptr2, 1024);
15 |
16 | fractionalDelayLineSetDelay(ptr1, leftDelay);
17 | fractionalDelayLineSetDelay(ptr2, rightDelay);
18 |
19 | @sample
20 | spl0 = fractionalDelayLineProcess(ptr1, spl0);
21 | spl1 = fractionalDelayLineProcess(ptr2, spl1);
--------------------------------------------------------------------------------
/app/src/main/assets/Liveprog/gainControl.eel:
--------------------------------------------------------------------------------
1 | desc: Gain control
2 | //tags: gain
3 |
4 | dB:-8<-30,15,1>Volume gain (dB)
5 |
6 | @init
7 | dB = -8;
8 | DB_2_LOG = 0.11512925464970228420089957273422;
9 | gainLin = exp(dB * DB_2_LOG);
10 |
11 | @sample
12 | spl0 = spl0 * gainLin;
13 | spl1 = spl1 * gainLin;
14 |
--------------------------------------------------------------------------------
/app/src/main/assets/Liveprog/msCentreBoost.eel:
--------------------------------------------------------------------------------
1 | desc: MS centre boost
2 |
3 | //tags: surround
4 |
5 | midBoostDB:3<-15,15>Mid boost (dB)
6 | sideBoostDB:0<-15,15>Side boost (dB)
7 |
8 | @init
9 | midBoostDB = 3.00;
10 | sideBoostDB = 0.00;
11 |
12 | function db2mag(db)
13 | (
14 | pow(10, db / 20);
15 | );
16 | function mag2db(mag)
17 | (
18 | 20 * log10(mag);
19 | );
20 |
21 | midBoost=db2mag(midBoostDB);
22 | sideBoost=db2mag(sideBoostDB);
23 |
24 | @sample
25 | mid= (spl0 + spl1) * 0.5;
26 | side= (spl0 - spl1) * 0.5;
27 | mid = mid * midBoost;
28 | side = side * sideBoost;
29 | spl0 = mid - side;
30 | spl1 = mid + side;
31 |
--------------------------------------------------------------------------------
/app/src/main/assets/Liveprog/stereowide.eel:
--------------------------------------------------------------------------------
1 | desc: Stereo widener
2 | //width:2<0,6,0.1>Stereo Width
3 | //reimplemented from: https://www.musicdsp.org/en/latest/Effects/256-stereo-width-control-obtained-via-transfromation-matrix.html
4 | //tags: stereo
5 |
6 | @init
7 | width = 2;
8 |
9 | @sample
10 | coef_S = width * 0.5;
11 |
12 | m = (spl0 + spl1) * 0.5;
13 | s = (spl1 - spl0) * coef_S;
14 |
15 | spl0 = m - s;
16 | spl1 = m + s;
17 |
--------------------------------------------------------------------------------
/app/src/main/assets/Liveprog/swapChannels.eel:
--------------------------------------------------------------------------------
1 | desc: Swap channels
2 | //tags: gain
3 |
4 | leftGain:0<-30,10>Left post-gain (dB)
5 | rightGain:0<-30,10>Right post-gain (dB)
6 |
7 | @init
8 | leftGain = 0.00;
9 | rightGain = 0.00;
10 |
11 | function db2Lin(dB)(
12 | DB_2_LOG = 0.11512925464970228420089957273422;
13 | exp(dB * DB_2_LOG);
14 | );
15 |
16 | @sample
17 | tmp0 = spl0;
18 | tmp1 = spl1;
19 |
20 | spl0 = tmp1 * db2Lin(leftGain);
21 | spl1 = tmp0 * db2Lin(rightGain);
22 |
--------------------------------------------------------------------------------
/app/src/main/assets/Liveprog/timeAdjustment.eel:
--------------------------------------------------------------------------------
1 | desc: Time adjustment (delay)
2 | //tags: delay
3 |
4 | slider1:0<-100,100,.1>Delay amount (ms)
5 | slider2:0<-120,12,1>Wet mix (dB)
6 | slider3:-120<-120,12,1>Dry mix (dB)
7 | slider4:0<-40000,40000,1>Additional delay amount (samples)
8 |
9 | @init
10 | bpos=0;
11 |
12 | slider1 = 0;
13 | slider2 = 0;
14 | slider3 = -120;
15 | slider4 = 0;
16 |
17 | wet=2^(slider2/6);
18 | dry=2^(slider3/6);
19 | delaylen = (slider1*srate*0.001 + slider4)|0;
20 | delaylen<0?(
21 | pdc_delay=-delaylen;
22 | pdc_top_ch=2;
23 | pdc_bot_ch=0;
24 | delaylen=0;
25 | ):(
26 | delaylen+=pdc_delay;
27 | //pdc_delay=0;
28 | );
29 | bufsize=srate*4.0; // extra in case the user wants to go over
30 |
31 | @sample
32 | bpos[0]=spl0;
33 | bpos[1]=spl1;
34 |
35 | rdpos=bpos-delaylen*2;
36 | rdpos<0 ? rdpos+=bufsize*2;
37 | spl0=spl0*dry+rdpos[0]*wet;
38 | spl1=spl1*dry+rdpos[1]*wet;
39 |
40 | bpos+=2;
41 | bpos>=bufsize*2 ? bpos=0;
42 |
--------------------------------------------------------------------------------
/app/src/main/cpp/EELStdOutExtension.c:
--------------------------------------------------------------------------------
1 | #include "EELStdOutExtension.h"
2 | #include "Effects/eel2/ns-eel.h"
3 |
4 | static stdOutHandler _stdOutHandlerPtr = NULL;
5 | static void* _stdOutHandlerUserPtr = NULL;
6 |
7 | void writeCircularStringBuf(char *cmdCur)
8 | {
9 | if(_stdOutHandlerPtr != NULL)
10 | {
11 | _stdOutHandlerPtr(cmdCur, _stdOutHandlerUserPtr);
12 | }
13 | }
14 |
15 | void setStdOutHandler(stdOutHandler funcPtr, void* userData)
16 | {
17 | _stdOutHandlerPtr = funcPtr;
18 | _stdOutHandlerUserPtr = userData;
19 | }
20 |
21 | int isStdOutHandlerSet()
22 | {
23 | return _stdOutHandlerPtr != NULL;
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/cpp/EELStdOutExtension.h:
--------------------------------------------------------------------------------
1 | #ifndef EELSTDOUTEXTENSION_H
2 | #define EELSTDOUTEXTENSION_H
3 |
4 | typedef void (*stdOutHandler)(const char*, void*);
5 |
6 | extern void setStdOutHandler(stdOutHandler funcPtr, void* userData);
7 | extern int isStdOutHandlerSet();
8 |
9 | #endif // EELSTDOUTEXTENSION_H
10 |
--------------------------------------------------------------------------------
/app/src/main/cpp/libcrashlytics-connector/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | project(crashlytics-connector LANGUAGES CXX)
2 |
3 | add_library( # Sets the name of the library.
4 | crashlytics-connector
5 |
6 | # Sets the library as a shared library.
7 | SHARED
8 |
9 | # Provides a relative path to your source file(s).
10 | ${CMAKE_CURRENT_LIST_DIR}/crashlytics.h
11 | ${CMAKE_CURRENT_LIST_DIR}/Log.h
12 | ${CMAKE_CURRENT_LIST_DIR}/Log.cpp
13 | )
14 |
15 |
16 | find_library( # Sets the name of the path variable.
17 | log-lib
18 |
19 | # Specifies the name of the NDK library that
20 | # you want CMake to locate.
21 | log)
22 |
23 | target_link_libraries( # Specifies the target library.
24 | crashlytics-connector
25 |
26 | # Links the target library to the log library
27 | # included in the NDK.
28 | ${log-lib})
29 |
--------------------------------------------------------------------------------
/app/src/main/cpp/libcrashlytics-connector/Log.cpp:
--------------------------------------------------------------------------------
1 | //
2 | // Created by tim on 08.07.22.
3 | //
4 |
5 | #include "Log.h"
6 |
7 | #ifdef NO_CRASHLYTICS
8 | void log::toCrashlytics(const char *level, const char* tag, const char *fmt, ...) {
9 | // Stubbed
10 | }
11 | #else
12 | // TODO clean up this abomination
13 | void log::toCrashlytics(const char *level, const char* tag, const char *fmt, ...) {
14 | va_list arguments;
15 | va_start(arguments, fmt);
16 | ssize_t bufsz = vsnprintf(nullptr, 0, fmt, arguments);
17 | char* buf = static_cast(malloc(bufsz + 1));
18 | vsnprintf(buf, bufsz + 1, fmt, arguments);
19 | firebase::crashlytics::Log(("["+std::string(level)+"] "+tag+": " + std::string(buf)).c_str());
20 | free(buf);
21 | va_end(arguments);
22 | }
23 | #endif
--------------------------------------------------------------------------------
/app/src/main/cpp/libjamesdsp-wrapper/EelVmVariable.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by tim on 30.06.22.
3 | //
4 |
5 | #ifndef ROOTLESSJAMESDSP_EELVMVARIABLE_H
6 | #define ROOTLESSJAMESDSP_EELVMVARIABLE_H
7 |
8 | #include "IJavaObject.h"
9 |
10 | class EelVmVariable : IJavaObject {
11 | public:
12 | EelVmVariable(JNIEnv* env, const char* name, const char* value, bool isString);
13 | bool isValid() const;
14 |
15 | jobject getJavaReference();
16 |
17 | private:
18 | jobject innerObject;
19 | bool _isValid = false;
20 | };
21 |
22 | #endif //ROOTLESSJAMESDSP_EELVMVARIABLE_H
23 |
--------------------------------------------------------------------------------
/app/src/main/cpp/libjamesdsp-wrapper/IJavaObject.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by tim on 01.07.22.
3 | //
4 |
5 | #ifndef ROOTLESSJAMESDSP_IJAVAOBJECT_H
6 | #define ROOTLESSJAMESDSP_IJAVAOBJECT_H
7 |
8 | #include
9 |
10 | class IJavaObject {
11 | public:
12 | IJavaObject(JNIEnv* env) : _env(env) {};
13 | virtual bool isValid() const = 0;
14 | virtual jobject getJavaReference() = 0;
15 |
16 | protected:
17 | JNIEnv* _env;
18 | };
19 |
20 | #endif //ROOTLESSJAMESDSP_IJAVAOBJECT_H
21 |
--------------------------------------------------------------------------------
/app/src/main/cpp/libjamesdsp-wrapper/JArrayList.h:
--------------------------------------------------------------------------------
1 | //
2 | // Created by tim on 01.07.22.
3 | //
4 |
5 | #ifndef ROOTLESSJAMESDSP_JARRAYLIST_H
6 | #define ROOTLESSJAMESDSP_JARRAYLIST_H
7 |
8 | #include "IJavaObject.h"
9 |
10 | class JArrayList : IJavaObject {
11 | public:
12 | JArrayList(JNIEnv* env);
13 | bool isValid() const;
14 | bool add(jobject object);
15 | jobject getJavaReference();
16 |
17 | private:
18 | jclass arrayClass;
19 | jobject innerArrayList;
20 | jmethodID methodAdd;
21 |
22 | bool _isValid = false;
23 | };
24 |
25 |
26 | #endif //ROOTLESSJAMESDSP_JARRAYLIST_H
27 |
--------------------------------------------------------------------------------
/app/src/main/cpp/libjamesdsp-wrapper/JamesDspWrapper.h:
--------------------------------------------------------------------------------
1 | #ifndef DSPHOST_H
2 | #define DSPHOST_H
3 |
4 | #include
5 |
6 | typedef struct
7 | {
8 | void* dsp;
9 | JNIEnv* env;
10 | jobject callbackInterface;
11 | jmethodID callbackOnLiveprogOutput;
12 | jmethodID callbackOnLiveprogExec;
13 | jmethodID callbackOnLiveprogResult;
14 | jmethodID callbackOnVdcParseError;
15 | } JamesDspWrapper;
16 |
17 | /* C interop function */
18 | static void receiveLiveprogStdOut(const char* buffer, void* userData);
19 |
20 | #endif // DSPHOST_H
21 |
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/api/AutoEqService.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.api
2 |
3 | import me.timschneeberger.rootlessjamesdsp.model.api.AeqSearchResult
4 | import retrofit2.Call
5 | import retrofit2.http.GET
6 | import retrofit2.http.Path
7 |
8 | interface AutoEqService {
9 | @GET("results/search/{query}")
10 | fun queryProfiles(@Path("query") query: String): Call>
11 | @GET("results/{id}")
12 | fun getProfile(@Path("id") id: Long): Call
13 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/api/UserAgentInterceptor.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.api
2 |
3 | import okhttp3.Interceptor
4 | import okhttp3.Response
5 |
6 | class UserAgentInterceptor(private val userAgent: String) : Interceptor {
7 | override fun intercept(chain: Interceptor.Chain): Response {
8 | return chain.proceed(
9 | chain.request().newBuilder()
10 | .header("User-Agent", userAgent)
11 | .build()
12 | )
13 | }
14 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/contract/AutoEqSelectorContract.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.contract
2 |
3 | import android.app.Activity
4 | import android.content.Context
5 | import android.content.Intent
6 | import androidx.activity.result.contract.ActivityResultContract
7 | import me.timschneeberger.rootlessjamesdsp.activity.AeqSelectorActivity
8 |
9 | class AutoEqSelectorContract : ActivityResultContract() {
10 |
11 | /* input unused */
12 | override fun createIntent(context: Context, input: Int): Intent {
13 | return Intent(context, AeqSelectorActivity::class.java)
14 | }
15 |
16 | override fun parseResult(resultCode: Int, intent: Intent?): String? = when {
17 | resultCode != Activity.RESULT_OK -> null
18 | else -> intent?.getStringExtra(EXTRA_RESULT) ?: ""
19 | }
20 |
21 | companion object {
22 | const val EXTRA_RESULT = "result"
23 | }
24 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/editor/syntax/Constant.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.editor.syntax
2 |
3 | import com.amrdeveloper.codeview.Code
4 |
5 | class Constant(private val title: String, private val prefix: String = title) : Code {
6 | override val codeTitle: String
7 | get() = title
8 | override val codePrefix: String
9 | get() = prefix
10 | override val codeBody: String
11 | get() = prefix
12 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/editor/syntax/Function.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.editor.syntax
2 |
3 | import com.amrdeveloper.codeview.Code
4 |
5 | class Function(private val title: String, private val prefix: String = title) : Code {
6 | override val codeTitle: String
7 | get() = title
8 | override val codePrefix: String
9 | get() = prefix
10 | override val codeBody: String
11 | get() = prefix
12 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/interop/structure/EelVmVariable.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.interop.structure
2 |
3 | data class EelVmVariable(var name: String, var value: String, var isString: Boolean)
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/liveprog/EelBaseProperty.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.liveprog
2 |
3 |
4 | abstract class EelBaseProperty(val key: String, val description: String) {
5 | /** Whether the property has a default value */
6 | abstract fun hasDefault(): Boolean
7 | /** Whether the value is the property is currently set to the default value */
8 | abstract fun isDefault(): Boolean
9 | /** Assign default value to current value if available */
10 | abstract fun restoreDefaults()
11 | /** Value to string */
12 | abstract fun valueAsString(): String
13 | /** Manipulate property in script file and return modified file contents */
14 | abstract fun manipulateProperty(contents: String): String?
15 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/liveprog/EelPropertyFactory.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.liveprog
2 |
3 | import kotlin.reflect.full.companionObjectInstance
4 |
5 | object EelPropertyFactory {
6 | private val typeOrder = arrayOf(
7 | EelNumberRangeProperty::class.companionObjectInstance,
8 | EelListProperty::class.companionObjectInstance
9 | ).map {
10 | it as IPropertyCompanion
11 | }
12 |
13 | fun create(line: String, contents: String): EelBaseProperty? {
14 | typeOrder.forEach { factory ->
15 | factory.parse(line, contents)?.let { return it }
16 | }
17 | return null
18 | }
19 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/liveprog/IPropertyCompanion.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.liveprog
2 |
3 | interface IPropertyCompanion {
4 | val definitionRegex: Regex
5 | fun parse(line: String, contents: String): EelBaseProperty?
6 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/model/AppInfo.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.model
2 |
3 | import android.graphics.drawable.Drawable
4 |
5 | data class AppInfo (
6 | val appName: String,
7 | val packageName: String,
8 | val icon: Drawable?,
9 | val isSystem: Boolean,
10 | val uid: Int,
11 | ) {
12 | override fun toString(): String {
13 | return "name=$appName; pkg=$packageName; isSystem=$isSystem; uid=$uid"
14 | }
15 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/model/GraphicEqNode.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.model
2 |
3 | import java.io.Serializable
4 | import java.util.*
5 |
6 | data class GraphicEqNode(
7 | val freq: Double,
8 | val gain: Double,
9 | val uuid: UUID = UUID.randomUUID() /* Uniquely identifies one node during an editing session */
10 | ) : Serializable
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/model/IEffectSession.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.model
2 |
3 | interface IEffectSession {
4 | var uid: Int
5 | var packageName: String
6 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/model/ItemViewModel.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.model
2 |
3 | import androidx.lifecycle.LiveData
4 | import androidx.lifecycle.MutableLiveData
5 | import androidx.lifecycle.ViewModel
6 |
7 | class ItemViewModel : ViewModel() {
8 | private val mutableSelectedItem = MutableLiveData()
9 | val selectedItem: LiveData get() = mutableSelectedItem
10 |
11 | fun selectItem(item: T) {
12 | mutableSelectedItem.value = item!!
13 | }
14 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/model/api/AeqSearchResult.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.model.api
2 |
3 | import com.google.gson.annotations.SerializedName
4 | import java.io.Serializable
5 |
6 | data class AeqSearchResult (
7 | @SerializedName("n") var name: String? = null,
8 | @SerializedName("s") var source: String? = null,
9 | @SerializedName("r") var rank: Int? = null,
10 | @SerializedName("i") var id: Long? = null
11 | ) : Serializable
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/model/preference/AppTheme.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.model.preference
2 |
3 | import me.timschneeberger.rootlessjamesdsp.R
4 |
5 | enum class AppTheme(val titleResId: Int?) {
6 | DEFAULT(R.string.theme_default),
7 | MONET(R.string.theme_monet),
8 | GREEN_APPLE(R.string.theme_greenapple),
9 | HONEY(R.string.theme_honey),
10 | STRAWBERRY_DAIQUIRI(R.string.theme_strawberrydaiquiri),
11 | TEALTURQUOISE(R.string.theme_tealturquoise),
12 | TIDAL_WAVE(R.string.theme_tidalwave),
13 | YINYANG(R.string.theme_yinyang),
14 | YOTSUBA(R.string.theme_yotsuba);
15 |
16 | companion object {
17 | fun fromInt(titleResId: Int) = values().first { it.titleResId == titleResId }
18 | }
19 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/model/preference/AudioEncoding.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.model.preference
2 |
3 | enum class AudioEncoding(val value: Int) {
4 | PcmShort(0),
5 | PcmFloat(1);
6 |
7 | companion object {
8 | fun fromInt(value: Int) = values().first { it.value == value }
9 | }
10 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/model/preference/SessionUpdateMode.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.model.preference
2 |
3 | enum class SessionUpdateMode(val value: Int) {
4 | Listener(0),
5 | ContinuousPolling(1);
6 |
7 | companion object {
8 | fun fromInt(value: Int) = values().first { it.value == value }
9 | }
10 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/model/preference/ThemeMode.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.model.preference
2 |
3 | enum class ThemeMode(val value: Int) {
4 | FollowSystem(0),
5 | Light(1),
6 | Dark(2);
7 |
8 | companion object {
9 | fun fromInt(value: Int) = values().first { it.value == value }
10 | }
11 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/model/room/BlockedApp.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.model.room
2 |
3 | import android.graphics.drawable.Drawable
4 | import androidx.room.ColumnInfo
5 | import androidx.room.Entity
6 | import androidx.room.Ignore
7 | import androidx.room.PrimaryKey
8 |
9 | @Entity
10 | data class BlockedApp(
11 | @PrimaryKey val uid: Int,
12 | @ColumnInfo(name = "package_name") val packageName: String?,
13 | @ColumnInfo(name = "app_name") val appName: String?
14 | ) {
15 | @Ignore var appIcon: Drawable? = null
16 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/model/root/RemoteEffectSession.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.model.root
2 |
3 | import kotlinx.coroutines.CoroutineScope
4 | import kotlinx.coroutines.Dispatchers
5 | import me.timschneeberger.rootlessjamesdsp.interop.JamesDspRemoteEngine
6 | import me.timschneeberger.rootlessjamesdsp.model.IEffectSession
7 |
8 | data class RemoteEffectSession(
9 | override var packageName: String,
10 | override var uid: Int,
11 | var effect: JamesDspRemoteEngine?
12 | ) : CoroutineScope by CoroutineScope(Dispatchers.Default), IEffectSession {
13 | override fun toString(): String {
14 | return "package=$packageName; uid=$uid"
15 | }
16 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/model/rootless/MutedEffectSession.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.model.rootless
2 |
3 | import android.media.audiofx.AudioEffect
4 | import me.timschneeberger.rootlessjamesdsp.model.IEffectSession
5 |
6 | data class MutedEffectSession(
7 | override var uid: Int,
8 | override var packageName: String,
9 | var audioMuteEffect: AudioEffect?
10 | ) : IEffectSession {
11 | override fun toString(): String {
12 | return "package=$packageName; uid=$uid"
13 | }
14 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/model/rootless/SessionRecordingPolicyEntry.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.model.rootless
2 |
3 | data class SessionRecordingPolicyEntry(val uid: Int, val packageName: String, val isRestricted: Boolean)
4 | {
5 | override fun toString(): String {
6 | return "uid=$uid; package=$packageName; isRestricted=$isRestricted"
7 | }
8 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/preference/IconPreference.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.preference
2 |
3 | import android.content.Context
4 | import android.util.AttributeSet
5 | import androidx.preference.Preference
6 | import me.timschneeberger.rootlessjamesdsp.R
7 |
8 |
9 | open class IconPreference(
10 | mContext: Context, val attrs: AttributeSet?,
11 | defStyleAttr: Int, defStyleRes: Int,
12 | ) : Preference(mContext, attrs, defStyleAttr, defStyleRes) {
13 |
14 | @JvmOverloads
15 | constructor(
16 | context: Context, attrs: AttributeSet? = null,
17 | defStyle: Int = androidx.preference.R.attr.preferenceStyle,
18 | ) : this(context, attrs, defStyle, 0) {
19 | layoutResource = R.layout.preference_icon
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/receiver/PowerStateReceiver.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.receiver
2 |
3 | import android.content.BroadcastReceiver
4 | import android.content.Context
5 | import android.content.Intent
6 | import me.timschneeberger.rootlessjamesdsp.utils.EngineUtils.toggleEnginePower
7 | import timber.log.Timber
8 |
9 | class PowerStateReceiver : BroadcastReceiver() {
10 | override fun onReceive(context: Context?, intent: Intent?) {
11 | intent ?: return
12 | context ?: return
13 |
14 | Timber.d("Received power state broadcast")
15 |
16 | context.toggleEnginePower(intent.getBooleanExtra(EXTRA_ENABLED, false))
17 | }
18 |
19 | companion object {
20 | const val EXTRA_ENABLED = "rootlessjamesdsp.enabled"
21 | }
22 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/service/NotificationListenerService.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.service
2 |
3 | import android.service.notification.NotificationListenerService
4 | import android.content.Intent
5 | import android.os.IBinder
6 | import android.service.notification.StatusBarNotification
7 |
8 | class NotificationListenerService : NotificationListenerService() {
9 | override fun onBind(intent: Intent): IBinder? {
10 | return super.onBind(intent)
11 | }
12 |
13 | override fun onNotificationPosted(sbn: StatusBarNotification) {}
14 | override fun onNotificationRemoved(sbn: StatusBarNotification) {}
15 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/session/dump/DebugDumpFileProvider.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.session.dump
2 |
3 | import androidx.core.content.FileProvider
4 |
5 | // Subclass to prevent naming collision
6 | class DebugDumpFileProvider : FileProvider()
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/session/dump/data/AudioServiceDump.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.session.dump.data
2 |
3 | import me.timschneeberger.rootlessjamesdsp.model.AudioSessionDumpEntry
4 |
5 | data class AudioServiceDump(override val sessions: HashMap) :
6 | ISessionInfoDump
7 | {
8 | override fun toString(): String {
9 | val sb = StringBuilder("\n--> Session stack\n")
10 | sessions.forEach { (key, value) ->
11 | sb.append("sid=$key\t-> $value\n")
12 | }
13 | return sb.toString()
14 | }
15 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/session/dump/data/IDump.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.session.dump.data
2 |
3 | interface IDump {
4 | override fun toString(): String
5 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/session/dump/data/ISessionInfoDump.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.session.dump.data
2 |
3 | import me.timschneeberger.rootlessjamesdsp.model.AudioSessionDumpEntry
4 |
5 | interface ISessionInfoDump : IDump {
6 | val sessions: HashMap
7 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/session/dump/data/ISessionPolicyInfoDump.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.session.dump.data
2 |
3 | interface ISessionPolicyInfoDump : IDump {
4 | val capturePermissionLog: HashMap
5 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/session/dump/data/PackageServiceDump.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.session.dump.data
2 |
3 | import me.timschneeberger.rootlessjamesdsp.model.AppInfo
4 |
5 | data class PackageServiceDump(val apps: List) : IDump {
6 | override fun toString(): String {
7 | val sb = StringBuilder("\n--> Apps\n")
8 | apps.forEach(sb::append)
9 | return sb.toString()
10 | }
11 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/session/dump/provider/IDumpProvider.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.session.dump.provider
2 |
3 | import android.content.Context
4 |
5 | interface IDumpProvider {
6 | /**
7 | * Dump audio session information to string for debug purposes
8 | */
9 | fun dumpString(context: Context): String
10 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/session/dump/provider/ISessionDumpProvider.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.session.dump.provider
2 |
3 | import android.content.Context
4 | import me.timschneeberger.rootlessjamesdsp.session.dump.data.ISessionInfoDump
5 |
6 | interface ISessionDumpProvider : IDumpProvider {
7 | /**
8 | * Dump audio session information as ISessionInfoDump
9 | */
10 | fun dump(context: Context): ISessionInfoDump?
11 |
12 | /**
13 | * Dump audio session information to string for debug purposes
14 | */
15 | override fun dumpString(context: Context): String
16 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/session/dump/provider/ISessionPolicyDumpProvider.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.session.dump.provider
2 |
3 | import android.content.Context
4 |
5 | interface ISessionPolicyDumpProvider : IDumpProvider {
6 | /**
7 | * Dump audio session information as ISessionInfoDump
8 | */
9 | fun dump(context: Context): ISessionPolicyDumpProvider?
10 |
11 | /**
12 | * Dump audio session information to string for debug purposes
13 | */
14 | override fun dumpString(context: Context): String
15 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/utils/FlavorConditionals.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("NOTHING_TO_INLINE")
2 | package me.timschneeberger.rootlessjamesdsp.utils
3 |
4 | import me.timschneeberger.rootlessjamesdsp.BuildConfig
5 |
6 | inline fun isRootless() = BuildConfig.ROOTLESS && !BuildConfig.PLUGIN
7 | inline fun isRoot() = !BuildConfig.ROOTLESS && !BuildConfig.PLUGIN
8 | inline fun isPlugin() = BuildConfig.PLUGIN
9 |
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/utils/Result.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.utils
2 |
3 | import kotlinx.coroutines.flow.Flow
4 | import kotlinx.coroutines.flow.catch
5 | import kotlinx.coroutines.flow.map
6 | import kotlinx.coroutines.flow.onStart
7 |
8 | sealed interface Result {
9 | data class Success(val data: T) : Result
10 |
11 | data class Error(
12 | val exception: Throwable? = null,
13 | val data: T? = null
14 | ) : Result
15 |
16 | object Loading : Result
17 | }
18 |
19 | fun Flow.asResult(): Flow> {
20 | return this
21 | .map> { Result.Success(it) }
22 | .onStart { emit(Result.Loading) }
23 | .catch { emit(Result.Error(it)) }
24 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/utils/preferences/NonPersistentDatastore.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.utils.preferences
2 |
3 | import androidx.preference.PreferenceDataStore
4 |
5 | class NonPersistentDatastore : PreferenceDataStore() {
6 | private var preferenceChangedListener: OnPreferenceChanged? = null
7 |
8 | override fun putFloat(key: String?, value: Float) {
9 | key ?: return
10 | this.preferenceChangedListener?.onFloatPreferenceChanged(key, value)
11 | }
12 |
13 | override fun putString(key: String?, value: String?) {}
14 |
15 | fun setOnPreferenceChanged(preferenceChangedListener: OnPreferenceChanged) {
16 | this.preferenceChangedListener = preferenceChangedListener
17 | }
18 |
19 | interface OnPreferenceChanged {
20 | fun onFloatPreferenceChanged(key: String, value: Float)
21 | }
22 | }
--------------------------------------------------------------------------------
/app/src/main/java/me/timschneeberger/rootlessjamesdsp/view/CompanderSurface.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.view
2 |
3 | import android.content.Context
4 | import android.util.AttributeSet
5 | import me.timschneeberger.rootlessjamesdsp.interop.JdspImpResToolbox
6 |
7 | class CompanderSurface(context: Context?, attrs: AttributeSet?) : BaseEqualizerSurface(context, attrs, 7, 40.0, 20000.0, -1.2, 1.2, 0.2f) {
8 | override fun computeCurve(
9 | freqs: DoubleArray,
10 | gains: DoubleArray,
11 | resolution: Int,
12 | dispFreq: DoubleArray,
13 | response: FloatArray
14 | ) {
15 | JdspImpResToolbox.ComputeCompResponse(freqs, gains, resolution, dispFreq, response)
16 | }
17 |
18 | override val frequencyScale: DoubleArray
19 | get() = SCALE
20 |
21 | companion object {
22 | val SCALE = doubleArrayOf(95.0, 200.0, 400.0, 800.0, 1600.0, 3400.0, 7500.0)
23 | }
24 | }
--------------------------------------------------------------------------------
/app/src/main/res/color/selector_floating_toggle_foreground_tint.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/color/selector_floating_toggle_tint.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
7 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_add_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_arrow_collapse_24dp.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_chart_timeline_variant_24dp.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_code_tags_24dp.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_cone_24dp.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_cube_outline_24dp.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_download_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_equalizer_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_find_replace_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_format_size_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_google_play_24dp.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_keyboard_arrow_down_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_keyboard_arrow_up_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_led_outline_24dp.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_play_arrow_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_redo_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_refresh_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_sine_wave_24dp.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_undo_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_warning_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_baseline_waveform_24dp.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_close_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_code_json.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_function_variant.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_key.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_numeric_1_circle_outline.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_numeric_2_circle_outline.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_numeric_3_circle_outline.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_numeric_4_circle_outline.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_numeric_5_circle_outline.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_numeric_6_circle_outline.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_search_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_tune_vertical_variant_24dp.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_add_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_bluetooth_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_cable_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_cast_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_check_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_check_circle_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_chevron_right_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_delete_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_delete_forever_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_download_24.xml:
--------------------------------------------------------------------------------
1 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_edit_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_error_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_folder_special_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_headphones_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
7 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_help_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_history_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_info_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_launch_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_mic_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_more_horiz_24.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_nodes_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_notifications_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_power_settings_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_privacy_tip_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_remove_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_save_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_search_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_security_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_settings_backup_restore_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_settings_input_hdmi_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_speaker_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_translate_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_troubleshoot_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_usb_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_volume_up_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_twotone_warning_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_welcome_24dp.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ripple_rounded.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_card_divider.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_rounded_corners.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_rounded_highlight.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shape_rounded_rectangle.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/font/jetbrainsmono.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/res/font/jetbrainsmono.ttf
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_preset_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/preference_compander.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/preference_compander_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/preference_equalizer.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/preference_equalizer_dialog.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
16 |
17 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/preference_materialswitch.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_filelibrary_add_context.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_liveprog_params.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_main_bottom_left.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_dsp_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_dsp_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/res/mipmap-hdpi/ic_dsp_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_dsp_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/res/mipmap-hdpi/ic_dsp_launcher_background.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_dsp_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/res/mipmap-hdpi/ic_dsp_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_dsp_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/res/mipmap-hdpi/ic_dsp_launcher_monochrome.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_dsp_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/res/mipmap-mdpi/ic_dsp_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_dsp_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/res/mipmap-mdpi/ic_dsp_launcher_background.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_dsp_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/res/mipmap-mdpi/ic_dsp_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_dsp_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/res/mipmap-mdpi/ic_dsp_launcher_monochrome.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_dsp_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/res/mipmap-xhdpi/ic_dsp_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_dsp_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/res/mipmap-xhdpi/ic_dsp_launcher_background.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_dsp_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/res/mipmap-xhdpi/ic_dsp_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_dsp_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/res/mipmap-xhdpi/ic_dsp_launcher_monochrome.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_dsp_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/res/mipmap-xxhdpi/ic_dsp_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_dsp_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/res/mipmap-xxhdpi/ic_dsp_launcher_background.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_dsp_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/res/mipmap-xxhdpi/ic_dsp_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_dsp_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/res/mipmap-xxhdpi/ic_dsp_launcher_monochrome.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_dsp_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/res/mipmap-xxxhdpi/ic_dsp_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_dsp_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/res/mipmap-xxxhdpi/ic_dsp_launcher_background.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_dsp_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/res/mipmap-xxxhdpi/ic_dsp_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_dsp_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/app/src/main/res/mipmap-xxxhdpi/ic_dsp_launcher_monochrome.png
--------------------------------------------------------------------------------
/app/src/main/res/navigation/nav_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/navigation/nav_onboarding.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/values-af-rZA/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values-az-rAZ/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values-bg-rBG/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values-ca-rES/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values-da-rDK/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values-de-rDE/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d Knoten
5 | - %d Knoten
6 |
7 |
8 | - %d anpassbarer Parameter
9 | - %d anpassbare Parameter
10 |
11 |
12 | - %d nicht unterstützte App wurde automatisch ausgeschlossen. Tippen für Details.
13 | - %d nicht unterstützte Apps wurden automatisch ausgeschlossen. Tippen für Details.
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/values-el-rGR/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d Προσαρμόσιμη παράμετρος
5 | - %d Προσαρμόσιμες παράμετροι
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/values-es-rES/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d nodo
5 | - %d nodos
6 |
7 |
8 | - %d parámetro personalizable
9 | - %d parámetro personalizable
10 |
11 |
12 | - %d la aplicación no soportada ha sido excluida automáticamente. Pulse para más detalles.
13 | - %d Las aplicaciones no soportadas han sido excluidas automáticamente. Pulse para más detalles.
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/values-fa-rIR/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values-fi-rFI/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values-fr-rFR/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d Nœud
5 | - %d Nœuds
6 |
7 |
8 | - %d Paramètre personnalisable
9 | - %d Paramètres personnalisables
10 |
11 |
12 | - %d L\'application non prise en charge a été automatiquement exclues. Appuyez pour plus de détails.
13 | - %d Les applications non prises en charge ont été automatiquement exclues. Appuyez pour plus de détails.
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/values-hi-rIN/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values-hr-rHR/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values-hu-rHU/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d testreszabható paraméter
5 | - %d testreszabható paraméterek
6 |
7 |
8 | - %d nem támogatott alkalmazás kizárva. Koppints a részletekért.
9 | - %d nem támogatott alkalmazások kizárva. Koppints a részletekért.
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/values-in-rID/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d simpul
5 |
6 |
7 | - %d parameter dapat diubah
8 |
9 |
10 | - %d aplikasi yang tidak didukung telah dikecualikan otomatis, sentuh untuk melihat detail.
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values-it-rIT/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d nodo
5 | - %d nodi
6 |
7 |
8 | - %d parametro personalizzabile
9 | - %d parametri personalizzabili
10 |
11 |
12 | - L\'applicazione %d non è supportata ed è stata automaticamente esclusa. Tocca per i dettagli.
13 | - Le applicazioni %d non sono supportate e sono state automaticamente escluse. Tocca per i dettagli.
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/values-iw-rIL/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values-ja-rJP/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d 個のノード
5 |
6 |
7 | - %d 個のカスタマイズ可能なパラメータ
8 |
9 |
10 | - %d 個のアプリはサポートされていないため、自動的に除外されました。詳細をついてはこちらをタップして下さい。
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values-ko-rKR/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d 노드
5 |
6 |
7 | - %d 사용자 정의 가능한 매개변수
8 |
9 |
10 | - %d개의 앱은 지원되지 않기 때문에 자동으로 제외되었습니다. 자세한 내용은 이쪽을 탭해 주세요.
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values-lt-rLT/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values-lv-rLV/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values-ms-rMY/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d simpul
5 |
6 |
7 | - %d parameter dapat diubah
8 |
9 |
10 | - %d aplikasi yang tidak didukung telah dikecualikan otomatis, sentuh untuk melihat detail.
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values-night/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | @color/md_white_1000_12
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values-night/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values-nl-rNL/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d node
5 | - %d nodes
6 |
7 |
8 | - %d aanpasbare parameter
9 | - %d aanpasbare parameters
10 |
11 |
12 | - %d niet-ondersteunde app is automatisch uitgesloten. Tik voor meer informatie.
13 | - %d niet-ondersteunde apps zijn automatisch uitgesloten. Tik voor meer informatie.
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/values-no-rNO/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values-pt-rBR/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d nó
5 | - %d nós
6 |
7 |
8 | - %d apps não suportados foram automaticamente exclusos. Clique para ver os detalhes.
9 | - %d apps não suportados foram automaticamente exclusos. Clique para ver os detalhes.
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/values-pt-rPT/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - Nó %d
5 | - %d Nós
6 |
7 |
8 | - Parâmetro personalizável %d
9 | - Parâmetros personalizáveis %d
10 |
11 |
12 | - %d aplicação não suportada foi automaticamente excluída. Clique para saber mais.
13 | - %d aplicações não suportadas foram automaticamente excluídas. Clique para saber mais.
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/values-ro-rRO/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d nod
5 | - %d noduri
6 | - %d noduri
7 |
8 |
9 | - %d parametru personalizabil
10 | - %d parametre personalizabile
11 | - %d parametre personalizabile
12 |
13 |
14 | - %d aplicație nesuportată a fost exclusă automat. Atingeți pentru detalii.
15 | - %d aplicațiile nesuportate au fost excluse automat. Atingeți pentru detalii.
16 | - %d aplicațiile nesuportate au fost excluse automat. Atingeți pentru detalii.
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/values-sk-rSK/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values-sl-rSI/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values-sr-rSP/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values-sv-rSE/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values-th-rTH/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d โหนด
5 |
6 |
7 | - %d พารามิเตอร์ที่ปรับแต่งได้
8 |
9 |
10 | - %d แอปที่ไม่รองรับได้รับการยกเว้นโดยอัตโนมัติ แตะเพื่อดูรายละเอียด
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values-tr-rTR/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d düğüm
5 | - %d düğümler
6 |
7 |
8 | - %d özelleştirilebilir parametre
9 | - %d özelleştirilebilir parametre
10 |
11 |
12 | - %d desteklenmeyen uygulama otomatik olarak dışlandı. Ayrıntılar için dokun.
13 | - %d desteklenmeyen uygulama otomatik olarak hariç tutulur. Ayrıntılar için dokun.
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v29/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/values-vi-rVN/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d Các nút
5 |
6 |
7 | - %d thông số có thể tùy chỉnh
8 |
9 |
10 | - %d các ứng dụng không được hỗ trợ đã tự động bị loại trừ. Nhấn để biết chi tiết.
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values-zh-rCN/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d 个节点
5 |
6 |
7 | - %d 个自定义参数
8 |
9 |
10 | - %d 个不支持的应用已被自动排除,点击查看详情。
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values-zh-rTW/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d 個截點
5 |
6 |
7 | - %d 個可自訂的參數
8 |
9 |
10 | - 已自動排除 %d 個不支援的程式。瞭解詳情。
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 | 12dp
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values/plurals.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | - %d node
5 | - %d nodes
6 |
7 |
8 | - %d customizable parameter
9 | - %d customizable parameters
10 |
11 |
12 | - %d unsupported app has been automatically excluded. Tap for details.
13 | - %d unsupported apps have been automatically excluded. Tap for details.
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/backup_rules.xml:
--------------------------------------------------------------------------------
1 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/data_extraction_rules.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/device_profile_preferences.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/provider_dump_paths.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/provider_filelibrary_paths.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/app/src/plugin/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/plugin/java/me/timschneeberger/rootlessjamesdsp/flavor/RootShellImpl.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("UNUSED_PARAMETER")
2 |
3 | package me.timschneeberger.rootlessjamesdsp.flavor
4 |
5 | // Stubbed
6 | object RootShellImpl {
7 | interface OnShellAttachedCallback {
8 | fun onShellAttached(isRoot: Boolean)
9 | }
10 |
11 | fun getShell(callback: OnShellAttachedCallback) {}
12 | fun cmd(command: String) = false
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/plugin/java/me/timschneeberger/rootlessjamesdsp/flavor/UpdateManager.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("UNUSED_PARAMETER", "RedundantSuspendModifier", "RedundantNullableReturnType")
2 |
3 | package me.timschneeberger.rootlessjamesdsp.flavor
4 |
5 | import android.content.Context
6 | import kotlinx.coroutines.flow.Flow
7 | import me.timschneeberger.rootlessjamesdsp.utils.Result
8 | import java.lang.IllegalStateException
9 |
10 | class UpdateManager(val context: Context) {
11 | fun getUpdateVersionInfo(): Pair? = throw IllegalStateException()
12 | suspend fun isUpdateAvailable(): Flow> = throw IllegalStateException()
13 | fun installUpdate(context: Context): Nothing = throw IllegalStateException()
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/root/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
11 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/root/java/me/timschneeberger/rootlessjamesdsp/flavor/updates/api/UpdateCheckService.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.flavor.updates.api
2 |
3 | import me.timschneeberger.rootlessjamesdsp.flavor.updates.model.UpdateCheckResponse
4 | import okhttp3.ResponseBody
5 | import retrofit2.Call
6 | import retrofit2.http.GET
7 | import retrofit2.http.Path
8 | import retrofit2.http.Streaming
9 |
10 | interface UpdateCheckService {
11 | @GET("updates/check/rootlessjamesdsp/{flavor}/{versionCode}")
12 | fun checkUpdate(@Path("flavor") flavor: String, @Path("versionCode") versionCode: String): Call
13 |
14 | @Streaming
15 | @GET("updates/download/rootlessjamesdsp/{flavor}")
16 | suspend fun downloadUpdate(@Path("flavor") flavor: String): ResponseBody
17 | }
--------------------------------------------------------------------------------
/app/src/root/java/me/timschneeberger/rootlessjamesdsp/flavor/updates/model/UpdateCheckResponse.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp.flavor.updates.model
2 |
3 | import com.google.gson.annotations.SerializedName
4 | import java.io.Serializable
5 |
6 | data class UpdateCheckResponse(
7 | @SerializedName("name") var name: String? = null,
8 | @SerializedName("versionName") var versionName: String? = null,
9 | @SerializedName("versionCode") var versionCode: Int? = null
10 | ) : Serializable
11 |
--------------------------------------------------------------------------------
/app/src/rootless/java/me/timschneeberger/rootlessjamesdsp/flavor/RootShellImpl.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("UNUSED_PARAMETER")
2 |
3 | package me.timschneeberger.rootlessjamesdsp.flavor
4 |
5 | // Stubbed
6 | object RootShellImpl {
7 | interface OnShellAttachedCallback {
8 | fun onShellAttached(isRoot: Boolean)
9 | }
10 |
11 | fun getShell(callback: OnShellAttachedCallback) {}
12 | fun cmd(command: String) = false
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/rootless/java/me/timschneeberger/rootlessjamesdsp/flavor/UpdateManager.kt:
--------------------------------------------------------------------------------
1 | @file:Suppress("UNUSED_PARAMETER", "RedundantSuspendModifier", "RedundantNullableReturnType")
2 |
3 | package me.timschneeberger.rootlessjamesdsp.flavor
4 |
5 | import android.content.Context
6 | import kotlinx.coroutines.flow.Flow
7 | import me.timschneeberger.rootlessjamesdsp.utils.Result
8 | import java.lang.IllegalStateException
9 |
10 | class UpdateManager(val context: Context) {
11 | fun getUpdateVersionInfo(): Pair? = throw IllegalStateException()
12 | suspend fun isUpdateAvailable(): Flow> = throw IllegalStateException()
13 | fun installUpdate(context: Context): Nothing = throw IllegalStateException()
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/test/java/me/timschneeberger/rootlessjamesdsp/ExampleUnitTest.kt:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.rootlessjamesdsp
2 |
3 | import org.junit.Test
4 |
5 | import org.junit.Assert.*
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * See [testing documentation](http://d.android.com/tools/testing).
11 | */
12 | class ExampleUnitTest {
13 | @Test
14 | fun addition_isCorrect() {
15 | assertEquals(4, 2 + 2)
16 | }
17 | }
--------------------------------------------------------------------------------
/build.gradle.kts:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 | buildscript {
3 | repositories {
4 | google()
5 | mavenCentral() // Google's Maven repository
6 | gradlePluginPortal()
7 | maven("https://jitpack.io")
8 | }
9 | dependencies {
10 | classpath("com.android.tools.build:gradle:8.7.3")
11 | classpath("com.google.gms:google-services:4.4.2")
12 | classpath("com.google.firebase:firebase-crashlytics-gradle:3.0.2")
13 | classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:2.1.0")
14 | }
15 | }
16 |
17 | plugins {
18 | id("com.android.application") version "8.7.3" apply false
19 | id("com.android.library") version "8.7.3" apply false
20 | id("org.jetbrains.kotlin.android") version "2.1.0" apply false
21 | }
22 |
23 | tasks.register("clean") {
24 | delete(rootProject.buildDir)
25 | }
--------------------------------------------------------------------------------
/buildSrc/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/buildSrc/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | `kotlin-dsl`
3 | }
4 |
5 | dependencies {
6 | compileOnly("org.jetbrains.kotlin:kotlin-gradle-plugin:2.1.0")
7 |
8 | implementation(gradleApi())
9 | }
10 |
11 | repositories {
12 | mavenCentral()
13 | google()
14 | }
15 |
--------------------------------------------------------------------------------
/buildSrc/src/main/kotlin/AndroidConfig.kt:
--------------------------------------------------------------------------------
1 | object AndroidConfig {
2 | var minSdk = 29
3 |
4 | const val compileSdk = 35
5 | const val targetSdk = 34
6 |
7 | const val versionName = "1.6.14"
8 | const val versionCode = 51
9 |
10 | const val kotlinVersion = "2.1.0"
11 | const val kspVersion = "2.1.0-1.0.29"
12 | const val shizukuVersion = "12.2.0"
13 | const val rikkaRefineVersion = "4.3.0"
14 | }
15 |
--------------------------------------------------------------------------------
/codeview/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/codeview/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 | apply plugin: 'org.jetbrains.kotlin.android'
3 |
4 | android {
5 | compileSdk 33
6 |
7 | defaultConfig {
8 | minSdkVersion 15
9 | targetSdkVersion 33
10 |
11 | consumerProguardFiles "consumer-rules.pro"
12 | }
13 |
14 | compileOptions {
15 | sourceCompatibility = JavaVersion.VERSION_17
16 | targetCompatibility = JavaVersion.VERSION_17
17 | }
18 |
19 | kotlinOptions {
20 | jvmTarget = "17"
21 | }
22 |
23 | buildTypes {
24 | release {
25 | minifyEnabled false
26 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
27 | }
28 | }
29 | namespace 'com.amrdeveloper.codeview'
30 | }
31 |
32 | dependencies {
33 | implementation 'androidx.appcompat:appcompat:1.7.0'
34 | }
--------------------------------------------------------------------------------
/codeview/consumer-rules.pro:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/codeview/consumer-rules.pro
--------------------------------------------------------------------------------
/codeview/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
--------------------------------------------------------------------------------
/codeview/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/crowdin.yml:
--------------------------------------------------------------------------------
1 | commit_message: 'l10n: updated %original_file_name% translation (%language%)'
2 | append_commit_message:
3 | pull_request_title: 'l10n: New Crowdin updates'
4 | pull_request_labels:
5 | - crowdin
6 | - l10n
7 | files:
8 | - source: /app/src/main/res/values/strings.xml
9 | translation: /app/src/main/res/values-%android_code%/%original_file_name%
10 | translate_attributes: 0
11 | - source: /fastlane/metadata/android/en-US/*.txt
12 | translation: /fastlane/metadata/android/%locale%/%original_file_name%
13 | - source: /app/src/main/res/values/plurals.xml
14 | translation: /app/src/main/res/values-%android_code%/plurals.xml
15 | translate_attributes: 0
16 |
--------------------------------------------------------------------------------
/fastlane/.gitignore:
--------------------------------------------------------------------------------
1 | report.xml
2 | README.md
3 |
--------------------------------------------------------------------------------
/fastlane/Appfile:
--------------------------------------------------------------------------------
1 | json_key_file("~/.keys/pc-api-6940086729655979938-806.json") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one
2 | package_name("me.timschneeberger.rootlessjamesdsp")
3 |
--------------------------------------------------------------------------------
/fastlane/Fastfile:
--------------------------------------------------------------------------------
1 | # This file contains the fastlane.tools configuration
2 | # You can find the documentation at https://docs.fastlane.tools
3 | #
4 | # For a list of all available actions, check out
5 | #
6 | # https://docs.fastlane.tools/actions
7 | #
8 | # For a list of all available plugins, check out
9 | #
10 | # https://docs.fastlane.tools/plugins/available-plugins
11 | #
12 |
13 | # Uncomment the line if you want fastlane to automatically update itself
14 | # update_fastlane
15 |
16 | default_platform(:android)
17 |
18 | platform :android do
19 | desc "Runs all the tests"
20 | lane :test do
21 | gradle(task: "test")
22 | end
23 |
24 | desc "Deploy new metadata to the Google Play"
25 | lane :deploy_meta do
26 | #gradle(task: "clean bundleRootlessFullRelease")
27 | upload_to_play_store(track: "beta", skip_upload_apk: true, skip_upload_aab: true)
28 | end
29 | end
30 |
--------------------------------------------------------------------------------
/fastlane/NOTE.md:
--------------------------------------------------------------------------------
1 | Run SUPPLY_VERSION_CODE=%versioncode% fastlane deploy_meta to upload changes.
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/af/short_description.txt:
--------------------------------------------------------------------------------
1 | System-wide JamesDSP audio processing engine for non-rooted Android devices.
--------------------------------------------------------------------------------
/fastlane/metadata/android/af/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/ar/short_description.txt:
--------------------------------------------------------------------------------
1 | محرك معالجة صوت JamesDSP على مستوى النظام لأجهزة الأندرويد غير المجذرة.
--------------------------------------------------------------------------------
/fastlane/metadata/android/ar/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/az-AZ/short_description.txt:
--------------------------------------------------------------------------------
1 | System-wide JamesDSP audio processing engine for non-rooted Android devices.
--------------------------------------------------------------------------------
/fastlane/metadata/android/az-AZ/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/bg/short_description.txt:
--------------------------------------------------------------------------------
1 | System-wide JamesDSP audio processing engine for non-rooted Android devices.
--------------------------------------------------------------------------------
/fastlane/metadata/android/bg/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/ca/short_description.txt:
--------------------------------------------------------------------------------
1 | System-wide JamesDSP audio processing engine for non-rooted Android devices.
--------------------------------------------------------------------------------
/fastlane/metadata/android/ca/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/cs-CZ/short_description.txt:
--------------------------------------------------------------------------------
1 | JamesDSP engine pro zpracování zvuku na Android zařízeních bez rootu.
--------------------------------------------------------------------------------
/fastlane/metadata/android/cs-CZ/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/da-DK/short_description.txt:
--------------------------------------------------------------------------------
1 | System-wide JamesDSP audio processing engine for non-rooted Android devices.
--------------------------------------------------------------------------------
/fastlane/metadata/android/da-DK/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/short_description.txt:
--------------------------------------------------------------------------------
1 | Systemweite JamesDSP-Audioverarbeitung für Android-Geräte ohne Root.
--------------------------------------------------------------------------------
/fastlane/metadata/android/de-DE/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/el-GR/short_description.txt:
--------------------------------------------------------------------------------
1 | System-wide JamesDSP audio processing engine for non-rooted Android devices.
--------------------------------------------------------------------------------
/fastlane/metadata/android/el-GR/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/17.txt:
--------------------------------------------------------------------------------
1 | * Script editor: Fixed performance issues when opening large files
2 | * Script editor: Better syntax highlighting for user-defined functions and other tokens
3 | * Script editor: Added font size settings
4 | * Fixed various crashes
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/18.txt:
--------------------------------------------------------------------------------
1 | * Added monochrome icon support for Android 13 launchers
2 | * Liveprog: Better syntax highlighting in script editor
3 | * Fixed many app crashes and bugs
4 | * Customizable AutoEQ API url (to allow self-hosting)
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/19.txt:
--------------------------------------------------------------------------------
1 | * Fixed minor bugs and crashes
2 | * Added fastlane structure for F-Droid deployment
3 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/20.txt:
--------------------------------------------------------------------------------
1 | * Added german translation
2 | * Fixed minor crash
3 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/21.txt:
--------------------------------------------------------------------------------
1 | Updates for libjamesdsp:
2 | * Fixed bug in convolver causing crashes in rare cases
3 | * Fixed pop sound in EEL when switching script files
4 |
5 | Updates for RootlessJamesDSP:
6 | * None
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/22.txt:
--------------------------------------------------------------------------------
1 | * Fixed critical issue which caused JamesDSP to stop and detect a false compatibility issue when using apps are accessing the microphone (like the voice search feature in YouTube & YT Music)
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/23.txt:
--------------------------------------------------------------------------------
1 | * Added link to the Crowdin translation project site
2 | * Added unfinished translations for more languages
3 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/24.txt:
--------------------------------------------------------------------------------
1 | * Added Quick tile settings toggle for the statusbar to enable/disable JamesDSP quickly
2 | * Added option to exclude app from recents (@fankes)
3 | * Added credits for translators
4 | * Filter liveprog by category
5 | * Added full Russian & Ukrainian translation (@netrunner-exe)
6 | * Added full Chinese translation (@fankes, @O2C14)
7 | * Added partial Spanish translation (@TheGary, @ianpok17)
8 | * Added partial Turkish translation (@pizzawithdirt)
9 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/25.txt:
--------------------------------------------------------------------------------
1 | * Fixed crash when opening audio format settings due to invalid default value
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/26.txt:
--------------------------------------------------------------------------------
1 | * Fixed crash caused by multi-threaded access
2 | * Updated translations for languages Russian, Ukrainian, Czech, Chinese, German
3 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/27.txt:
--------------------------------------------------------------------------------
1 | * Backup/restore feature with automatic backups
2 | * Preset system rewritten & stabilized
3 | * Presets/backups can now be properly shared between app versions/flavors without causing issues
4 | * Better auto-start notification that skips the permission prompt if possible and doesn't bring the app into foreground by force
5 | * Added info about skipping the capture permission prompt in the ADB setup wizard
6 | * Updated translations for languages Russian, Ukrainian, Czech, Chinese, German, Hindi
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/28.txt:
--------------------------------------------------------------------------------
1 | * Hotfix: fixed crash during setup wizard due to regression in v1.4.0
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/29.txt:
--------------------------------------------------------------------------------
1 | * Hotfix: fixed crash when opening file selector (Convolver, DDC, Liveprog) due to regression in v1.4.1
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/30.txt:
--------------------------------------------------------------------------------
1 | * Material3 transitions in settings
2 | * Translation updates
3 | * Other fixes & code refactors
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/31.txt:
--------------------------------------------------------------------------------
1 | * Added device-specific audio profiles (automatic switching)
2 | * Automatic auto-start support (requires additional permissions)
3 | * Equalizer: apply changes in real-time
4 | * Translation updates
5 | * Other fixes & code refactors
6 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/32.txt:
--------------------------------------------------------------------------------
1 | * Added prominent disclosure about diagnostic reports to setup wizard
2 | * Added category icons (can be disabled in settings)
3 | * Several crash and bug fixes
4 | * Translation updates
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/33.txt:
--------------------------------------------------------------------------------
1 | * Translation updates
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/34.txt:
--------------------------------------------------------------------------------
1 | * Translation updates
2 | * Fixed various crashes and bugs
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/35.txt:
--------------------------------------------------------------------------------
1 | * Translation updates
2 | * Fixed bug that caused the 'Contribute translations' message to be unresponsive
3 | * Fixed various crashes and bugs
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/37.txt:
--------------------------------------------------------------------------------
1 | * Dynamic range compander effect added
2 | * Multimodal equalizer effect added (replaces old EQ)
3 | * Removed weird spiky sound for vacuum tube simulation
4 | * Convolution modules use automatic benchmarking (in the background) to optimize performance
5 | * Several bug fixes and minor performance improvements
6 | * Translation updates
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/38.txt:
--------------------------------------------------------------------------------
1 | * Fixed crash caused by racing-condition when turning off JamesDSP
2 | * Several minor bug fixes
3 | * Translation updates
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/39.txt:
--------------------------------------------------------------------------------
1 | * Disabled new background benchmark operations to prevent crashes
2 | * Updated libjamesdsp
3 | * EEL engine updated
4 | * Minor bug fixes
5 | * Translation updates
6 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/40.txt:
--------------------------------------------------------------------------------
1 | * Disabled new background benchmark operations to prevent crashes
2 | * Play store version only: Disabled some compat features to comply with Play Store's policy
3 | * Minor bug fixes
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/41.txt:
--------------------------------------------------------------------------------
1 | * libjamesdsp updated
2 | * Compander time-freqeuncy transform parameter added
3 | * Several minor bug fixes
4 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/42.txt:
--------------------------------------------------------------------------------
1 | * libjamesdsp updated
2 | * New compander time-frequency transform parameter added
3 | * Convolver benchmarking optimizations
4 | * Fixed random crashes
5 |
6 | * Small playback optimizations
7 | * Several minor bug fixes
8 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/43.txt:
--------------------------------------------------------------------------------
1 | * libjamesdsp updated
2 | * New resampler implementation
3 |
4 | * Translation updates
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/44.txt:
--------------------------------------------------------------------------------
1 | * Prevent audio echo on some devices
2 | * Translation updates
3 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/45.txt:
--------------------------------------------------------------------------------
1 | * Merged with updates & bugfixes from upstream libjamesdsp
2 | * Fixed sorting bug that caused the file selection list to be inconsistent (liveprog, convolver, vdc)
3 | * Translation updates
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/46.txt:
--------------------------------------------------------------------------------
1 | * Show warning about new restrictions on Android 15
2 | * Fixed crash during setup wizard on Android 14
3 | * Target Android 14
4 | * Translation updates
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/47.txt:
--------------------------------------------------------------------------------
1 | * Crash during Shizuku setup on Android 15 fixed
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/48.txt:
--------------------------------------------------------------------------------
1 | * Fixed a crash when toggling quick tile on Android 14
2 | * Fixed a crash during automatic backup on Android 14 and 15 due to new foreground service restrictions
3 | * Fixed several crashes when attempting to open URLs with no browser installed
4 | * Fixed a rare crash on startup
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/49.txt:
--------------------------------------------------------------------------------
1 | * Request users to grant the 'PROJECT_MEDIA' permission on Android 15+ due to new screen sharing restrictions
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/50.txt:
--------------------------------------------------------------------------------
1 | * Fixed another crash during setup on Android 14
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/featureGraphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/fastlane/metadata/android/en-US/images/featureGraphic.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/fastlane/metadata/android/en-US/images/icon.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/1_en-US.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/fastlane/metadata/android/en-US/images/phoneScreenshots/1_en-US.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/2_en-US.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/fastlane/metadata/android/en-US/images/phoneScreenshots/2_en-US.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/3_en-US.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/fastlane/metadata/android/en-US/images/phoneScreenshots/3_en-US.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/4_en-US.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/fastlane/metadata/android/en-US/images/phoneScreenshots/4_en-US.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/5_en-US.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/fastlane/metadata/android/en-US/images/phoneScreenshots/5_en-US.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/6_en-US.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/fastlane/metadata/android/en-US/images/phoneScreenshots/6_en-US.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/7_en-US.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/fastlane/metadata/android/en-US/images/phoneScreenshots/7_en-US.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/short_description.txt:
--------------------------------------------------------------------------------
1 | System-wide JamesDSP audio processing engine for non-rooted Android devices.
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/es-ES/short_description.txt:
--------------------------------------------------------------------------------
1 | Motor de procesamiento de audio JamesDSP para dispositivos Android sin root.
--------------------------------------------------------------------------------
/fastlane/metadata/android/es-ES/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/fa-IR/short_description.txt:
--------------------------------------------------------------------------------
1 | System-wide JamesDSP audio processing engine for non-rooted Android devices.
--------------------------------------------------------------------------------
/fastlane/metadata/android/fa-IR/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/fi-FI/short_description.txt:
--------------------------------------------------------------------------------
1 | System-wide JamesDSP audio processing engine for non-rooted Android devices.
--------------------------------------------------------------------------------
/fastlane/metadata/android/fi-FI/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/fr-FR/short_description.txt:
--------------------------------------------------------------------------------
1 | Moteur de traitement audio JamesDSP pour appareils Android non rootés.
--------------------------------------------------------------------------------
/fastlane/metadata/android/fr-FR/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/he-IL/short_description.txt:
--------------------------------------------------------------------------------
1 | System-wide JamesDSP audio processing engine for non-rooted Android devices.
--------------------------------------------------------------------------------
/fastlane/metadata/android/he-IL/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/hi-IN/short_description.txt:
--------------------------------------------------------------------------------
1 | गैर-रूट किए गए उपकरणों के लिए सिस्टम-वाइड जेम्स डीएसपी ऑडियो प्रोसेसिंग इंजन
--------------------------------------------------------------------------------
/fastlane/metadata/android/hi-IN/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/hr-HR/short_description.txt:
--------------------------------------------------------------------------------
1 | System-wide JamesDSP audio processing engine for non-rooted Android devices.
--------------------------------------------------------------------------------
/fastlane/metadata/android/hr-HR/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/hu-HU/short_description.txt:
--------------------------------------------------------------------------------
1 | System-wide JamesDSP audio processing engine for non-rooted Android devices.
--------------------------------------------------------------------------------
/fastlane/metadata/android/hu-HU/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/id/short_description.txt:
--------------------------------------------------------------------------------
1 | Pemroses audio System-wide JamesDSP untuk perangkat Android yang tidak di root.
--------------------------------------------------------------------------------
/fastlane/metadata/android/id/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/it-IT/short_description.txt:
--------------------------------------------------------------------------------
1 | Motore di elaborazione audio JamesDSP per dispositivi Android non rootati.
--------------------------------------------------------------------------------
/fastlane/metadata/android/it-IT/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/ja-JP/short_description.txt:
--------------------------------------------------------------------------------
1 | root化されていないAndroidデバイス向けのシステム全体で使えるJamesDSPオーディオ処理エンジンです。
--------------------------------------------------------------------------------
/fastlane/metadata/android/ja-JP/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/ko-KR/short_description.txt:
--------------------------------------------------------------------------------
1 | 루트 권한이 없는 Android 기기에서 사용 가능한 JamesDSP 시스템 전역 오디오 처리 엔진입니다.
--------------------------------------------------------------------------------
/fastlane/metadata/android/ko-KR/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/lt-LT/short_description.txt:
--------------------------------------------------------------------------------
1 | System-wide JamesDSP audio processing engine for non-rooted Android devices.
--------------------------------------------------------------------------------
/fastlane/metadata/android/lt-LT/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/lv/short_description.txt:
--------------------------------------------------------------------------------
1 | System-wide JamesDSP audio processing engine for non-rooted Android devices.
--------------------------------------------------------------------------------
/fastlane/metadata/android/lv/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/ms-MY/short_description.txt:
--------------------------------------------------------------------------------
1 | System-wide JamesDSP audio processing engine for non-rooted Android devices.
--------------------------------------------------------------------------------
/fastlane/metadata/android/ms-MY/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/nl-NL/short_description.txt:
--------------------------------------------------------------------------------
1 | Systeem-brede JamesDSP audio-verwerkings engine voor Android zonder root.
--------------------------------------------------------------------------------
/fastlane/metadata/android/nl-NL/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/no-NO/short_description.txt:
--------------------------------------------------------------------------------
1 | System-wide JamesDSP audio processing engine for non-rooted Android devices.
--------------------------------------------------------------------------------
/fastlane/metadata/android/no-NO/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/pl-PL/short_description.txt:
--------------------------------------------------------------------------------
1 | System-wide JamesDSP audio processing engine for non-rooted Android devices.
--------------------------------------------------------------------------------
/fastlane/metadata/android/pl-PL/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt-BR/short_description.txt:
--------------------------------------------------------------------------------
1 | Equalizador do sistema James para dispositivos Android sem raiz.
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt-BR/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt-PT/short_description.txt:
--------------------------------------------------------------------------------
1 | Mecanismo de processamento de áudio JamesDSP para dispositivos Android sem root.
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt-PT/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/ro/short_description.txt:
--------------------------------------------------------------------------------
1 | System-wide JamesDSP audio processing engine for non-rooted Android devices.
--------------------------------------------------------------------------------
/fastlane/metadata/android/ro/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/ru-RU/short_description.txt:
--------------------------------------------------------------------------------
1 | Общесистемный движок обработки аудио JamesDSP для устройств без root-доступа.
--------------------------------------------------------------------------------
/fastlane/metadata/android/ru-RU/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/sk/short_description.txt:
--------------------------------------------------------------------------------
1 | System-wide JamesDSP audio processing engine for non-rooted Android devices.
--------------------------------------------------------------------------------
/fastlane/metadata/android/sk/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/sl-SI/short_description.txt:
--------------------------------------------------------------------------------
1 | System-wide JamesDSP audio processing engine for non-rooted Android devices.
--------------------------------------------------------------------------------
/fastlane/metadata/android/sl-SI/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/sr/short_description.txt:
--------------------------------------------------------------------------------
1 | System-wide JamesDSP audio processing engine for non-rooted Android devices.
--------------------------------------------------------------------------------
/fastlane/metadata/android/sr/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/sv-SE/short_description.txt:
--------------------------------------------------------------------------------
1 | System-wide JamesDSP audio processing engine for non-rooted Android devices.
--------------------------------------------------------------------------------
/fastlane/metadata/android/sv-SE/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/th/short_description.txt:
--------------------------------------------------------------------------------
1 | เครื่องมือประมวลผลเสียง JamesDSP ทั้งระบบสำหรับอุปกรณ์ Android ที่ไม่ได้รูท
--------------------------------------------------------------------------------
/fastlane/metadata/android/th/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/tr-TR/short_description.txt:
--------------------------------------------------------------------------------
1 | Root'suz Android cihazlar için sistem çapında JamesDSP ses işleme motoru.
--------------------------------------------------------------------------------
/fastlane/metadata/android/tr-TR/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/uk/short_description.txt:
--------------------------------------------------------------------------------
1 | Загальносистемний механізм обробки звуку JamesDSP для пристроїв без прав root.
--------------------------------------------------------------------------------
/fastlane/metadata/android/uk/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/vi/short_description.txt:
--------------------------------------------------------------------------------
1 | Ứng dụng xử lý âm thanh toàn hệ thống JamesDPS dành cho các thiết bị chưa root.
--------------------------------------------------------------------------------
/fastlane/metadata/android/vi/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-CN/short_description.txt:
--------------------------------------------------------------------------------
1 | 全系统 JamesDSP 用于未 Root 的 Android 设备的音频处理引擎。
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-CN/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-TW/short_description.txt:
--------------------------------------------------------------------------------
1 | JamesDSP是個系統級的全域音效處理引擎,無須root權限。
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-TW/title.txt:
--------------------------------------------------------------------------------
1 | RootlessJamesDSP
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Tue Sep 20 21:31:15 CEST 2022
2 | distributionBase=GRADLE_USER_HOME
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
4 | distributionPath=wrapper/dists
5 | zipStorePath=wrapper/dists
6 | zipStoreBase=GRADLE_USER_HOME
7 |
--------------------------------------------------------------------------------
/hidden-api-impl/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/hidden-api-impl/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.kts.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
23 | -dontobfuscate
24 | -dontoptimize
25 | -dontshrink
26 | -dontpreverify
--------------------------------------------------------------------------------
/hidden-api-impl/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/hidden-api-impl/src/main/java/me/timschneeberger/hiddenapi_impl/AudioSystem.java:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.hiddenapi_impl;
2 |
3 | import android.annotation.SuppressLint;
4 |
5 | public class AudioSystem {
6 | private static final int REFLECTION_ERROR = -999;
7 | private Class> mAudioSystem;
8 |
9 | @SuppressLint("PrivateApi")
10 | public AudioSystem() {
11 | try {
12 | mAudioSystem = Class.forName("android.media.AudioSystem");
13 | } catch (ClassNotFoundException e) {
14 | e.printStackTrace();
15 | }
16 | }
17 |
18 |
19 | @SuppressWarnings("ConstantConditions")
20 | public int setAllowedCapturePolicy(int uid, int flags) {
21 | try {
22 | return (Integer) mAudioSystem.getMethod("setAllowedCapturePolicy", int.class, int.class).invoke(mAudioSystem, uid, flags);
23 | } catch (Exception e) {
24 | e.printStackTrace();
25 | }
26 | return -1;
27 | }
28 | }
--------------------------------------------------------------------------------
/hidden-api-impl/src/main/java/me/timschneeberger/hiddenapi_impl/Singleton.java:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.hiddenapi_impl;
2 |
3 | public abstract class Singleton {
4 |
5 | private T mInstance;
6 |
7 | protected abstract T create();
8 |
9 | public final T get() {
10 | synchronized (this) {
11 | if (mInstance == null) {
12 | try {
13 | mInstance = create();
14 | }
15 | catch (Exception ex) {
16 | ex.printStackTrace();
17 | }
18 | }
19 | return mInstance;
20 | }
21 | }
22 |
23 | public final T getOrThrow() {
24 | T instance = get();
25 | if(instance == null)
26 | throw new NullPointerException();
27 | return instance;
28 | }
29 | }
--------------------------------------------------------------------------------
/hidden-api-impl/src/main/java/me/timschneeberger/hiddenapi_impl/UserHandle.java:
--------------------------------------------------------------------------------
1 | package me.timschneeberger.hiddenapi_impl;
2 |
3 | import android.annotation.UserIdInt;
4 |
5 | public class UserHandle {
6 | /** A user id constant to indicate the "system" user of the device */
7 | public static final @UserIdInt int USER_SYSTEM = 0;
8 | }
9 |
--------------------------------------------------------------------------------
/hidden-api-refined/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | /libs
3 |
--------------------------------------------------------------------------------
/hidden-api-refined/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.kts.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
23 | -dontobfuscate
--------------------------------------------------------------------------------
/hidden-api-refined/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/hidden-api-stubs/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/hidden-api-stubs/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("java-library")
3 | }
4 |
5 | java {
6 | sourceCompatibility = JavaVersion.VERSION_1_8
7 | targetCompatibility = JavaVersion.VERSION_1_8
8 | }
--------------------------------------------------------------------------------
/hidden-api-stubs/src/main/java/android/os/IInterface.java:
--------------------------------------------------------------------------------
1 | package android.os;
2 |
3 | public interface IInterface {
4 |
5 | IBinder asBinder();
6 | }
7 |
--------------------------------------------------------------------------------
/hidden-api-stubs/src/main/java/android/os/RemoteException.java:
--------------------------------------------------------------------------------
1 | package android.os;
2 |
3 | public class RemoteException extends Exception {
4 |
5 | public RemoteException(String message) {
6 | throw new RuntimeException("STUB");
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/hidden-api-stubs/src/main/java/com/android/internal/app/IAppOpsService.java:
--------------------------------------------------------------------------------
1 | package com.android.internal.app;
2 |
3 | import android.os.Binder;
4 | import android.os.IBinder;
5 | import android.os.IInterface;
6 | import android.os.RemoteException;
7 |
8 | public interface IAppOpsService extends IInterface {
9 |
10 | void setMode(int code, int uid, String packageName, int mode) throws RemoteException;
11 |
12 | abstract class Stub extends Binder implements IAppOpsService {
13 |
14 | public static IAppOpsService asInterface(IBinder obj) {
15 | throw new UnsupportedOperationException();
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/img/icons/android/play_store_512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/android/play_store_512.png
--------------------------------------------------------------------------------
/img/icons/android/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/img/icons/android/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/android/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/img/icons/android/res/mipmap-hdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/android/res/mipmap-hdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/img/icons/android/res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/android/res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/img/icons/android/res/mipmap-hdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/android/res/mipmap-hdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/img/icons/android/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/android/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/img/icons/android/res/mipmap-mdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/android/res/mipmap-mdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/img/icons/android/res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/android/res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/img/icons/android/res/mipmap-mdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/android/res/mipmap-mdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/img/icons/android/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/android/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/img/icons/android/res/mipmap-xhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/android/res/mipmap-xhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/img/icons/android/res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/android/res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/img/icons/android/res/mipmap-xhdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/android/res/mipmap-xhdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/img/icons/android/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/android/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/img/icons/android/res/mipmap-xxhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/android/res/mipmap-xxhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/img/icons/android/res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/android/res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/img/icons/android/res/mipmap-xxhdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/android/res/mipmap-xxhdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/img/icons/android/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/android/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/img/icons/android/res/mipmap-xxxhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/android/res/mipmap-xxxhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/img/icons/android/res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/android/res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/img/icons/android/res/mipmap-xxxhdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/android/res/mipmap-xxxhdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/img/icons/androidtv/res/drawable-xhdpi/tv_banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/androidtv/res/drawable-xhdpi/tv_banner.png
--------------------------------------------------------------------------------
/img/icons/play-store/play_store_feature_graphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/play-store/play_store_feature_graphic.png
--------------------------------------------------------------------------------
/img/icons/web/README.txt:
--------------------------------------------------------------------------------
1 | Add this to your HTML :
2 |
3 |
4 |
5 |
6 | Add this to your app's manifest.json:
7 |
8 | ...
9 | {
10 | "icons": [
11 | { "src": "/favicon.ico", "type": "image/x-icon", "sizes": "16x16 32x32" },
12 | { "src": "/icon-192.png", "type": "image/png", "sizes": "192x192" },
13 | { "src": "/icon-512.png", "type": "image/png", "sizes": "512x512" },
14 | { "src": "/icon-192-maskable.png", "type": "image/png", "sizes": "192x192", "purpose": "maskable" },
15 | { "src": "/icon-512-maskable.png", "type": "image/png", "sizes": "512x512", "purpose": "maskable" }
16 | ]
17 | }
18 | ...
19 |
--------------------------------------------------------------------------------
/img/icons/web/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/web/apple-touch-icon.png
--------------------------------------------------------------------------------
/img/icons/web/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/web/favicon.ico
--------------------------------------------------------------------------------
/img/icons/web/icon-192-maskable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/web/icon-192-maskable.png
--------------------------------------------------------------------------------
/img/icons/web/icon-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/web/icon-192.png
--------------------------------------------------------------------------------
/img/icons/web/icon-512-maskable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/web/icon-512-maskable.png
--------------------------------------------------------------------------------
/img/icons/web/icon-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/icons/web/icon-512.png
--------------------------------------------------------------------------------
/img/preview-res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/img/preview-res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/preview-res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/img/preview-res/mipmap-hdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/preview-res/mipmap-hdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/img/preview-res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/preview-res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/img/preview-res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/preview-res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/img/preview-res/mipmap-mdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/preview-res/mipmap-mdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/img/preview-res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/preview-res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/img/preview-res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/preview-res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/img/preview-res/mipmap-xhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/preview-res/mipmap-xhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/img/preview-res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/preview-res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/img/preview-res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/preview-res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/img/preview-res/mipmap-xxhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/preview-res/mipmap-xxhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/img/preview-res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/preview-res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/img/preview-res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/preview-res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/img/preview-res/mipmap-xxxhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/preview-res/mipmap-xxxhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/img/preview-res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/preview-res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/img/screenshot1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/screenshot1.png
--------------------------------------------------------------------------------
/img/screenshot2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/screenshot2.png
--------------------------------------------------------------------------------
/img/screenshot3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/screenshot3.png
--------------------------------------------------------------------------------
/img/screenshot4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/screenshot4.png
--------------------------------------------------------------------------------
/img/screenshot5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/screenshot5.png
--------------------------------------------------------------------------------
/img/screenshot6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/screenshot6.png
--------------------------------------------------------------------------------
/img/screenshot7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/timschneeb/RootlessJamesDSP/879335702df0dea4f30ed22e6411c5c33f5b2217/img/screenshot7.png
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | repositories {
3 | gradlePluginPortal()
4 | google()
5 | mavenCentral()
6 | }
7 | }
8 | dependencyResolutionManagement {
9 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
10 | repositories {
11 | google()
12 | mavenCentral()
13 | maven { url "https://jitpack.io" }
14 | }
15 | }
16 |
17 | rootProject.name = "RootlessJamesDSP"
18 | include ':app'
19 | include ':codeview'
20 | include ':hidden-api-stubs'
21 | include ':hidden-api-impl'
22 | include ':hidden-api-refined'
23 |
--------------------------------------------------------------------------------