├── .github ├── ISSUE_TEMPLATE │ └── bug_report.md └── workflows │ ├── android-build.yml │ └── android.yml ├── .gitignore ├── LICENSE ├── README.md ├── android-file-chooser ├── .gitignore ├── build.gradle ├── gradle.properties ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── obsez │ │ └── android │ │ └── lib │ │ └── filechooser │ │ ├── ChooserDialog.java │ │ ├── defBackPressed.java │ │ ├── internals │ │ ├── ExtFileFilter.java │ │ ├── FileUtil.java │ │ ├── RegexFileFilter.java │ │ ├── UiUtil.java │ │ └── WrappedDrawable.java │ │ ├── keyListener.java │ │ ├── onShowListener.java │ │ ├── permissions │ │ ├── PermissionActivity.java │ │ └── PermissionsUtil.java │ │ └── tool │ │ ├── DirAdapter.java │ │ └── RootFile.java │ └── res │ ├── drawable-hdpi │ ├── ic_chooser.png │ ├── ic_file.png │ ├── ic_folder.png │ └── ic_provider.png │ ├── drawable-mdpi │ ├── ic_chooser.png │ ├── ic_file.png │ ├── ic_folder.png │ ├── ic_provider.png │ ├── listview_item_selector.xml │ └── listview_item_selector_dark.xml │ ├── drawable-xhdpi │ ├── ic_chooser.png │ ├── ic_file.png │ ├── ic_folder.png │ └── ic_provider.png │ ├── drawable-xxhdpi │ ├── ic_chooser.png │ ├── ic_file.png │ ├── ic_folder.png │ └── ic_provider.png │ ├── drawable │ ├── ic_add_24dp.xml │ ├── ic_delete_24dp.xml │ └── ic_menu_24dp.xml │ ├── layout │ └── li_row_textview.xml │ ├── values-ca │ └── strings.xml │ ├── values-de │ └── strings.xml │ ├── values-es │ └── strings.xml │ ├── values-fr │ └── strings.xml │ ├── values-ga │ └── strings.xml │ ├── values-in │ ├── strings.xml │ └── strings_0.xml │ ├── values-it │ └── strings.xml │ ├── values-ka │ ├── strings.xml │ └── strings_0.xml │ ├── values-ko │ └── strings.xml │ ├── values-pl │ └── strings.xml │ ├── values-pt-rBR │ └── strings.xml │ ├── values-ru │ └── strings.xml │ ├── values-v11 │ └── strings.xml │ ├── values-v19 │ └── bool.xml │ ├── values-zh-rCN │ ├── strings.xml │ └── strings_0.xml │ ├── values-zh-rTW │ ├── strings.xml │ └── strings_0.xml │ └── values │ ├── attr.xml │ ├── bool.xml │ ├── colors.xml │ ├── dimens.xml │ ├── strings.xml │ ├── strings_0.xml │ └── styles.xml ├── app ├── .gitignore ├── build.gradle ├── libs │ ├── README.md │ ├── lib-decoder-av1-release.aar │ ├── lib-decoder-ffmpeg-release.aar │ ├── lib-decoder-iamf-release.aar │ ├── lib-decoder-mpegh-release.aar │ ├── lib-exoplayer-release.aar │ ├── lib-extractor-release.aar │ └── lib-ui-release.aar ├── proguard-rules.pro └── src │ ├── accrescent │ └── AndroidManifest.xml │ ├── latest │ └── AndroidManifest.xml │ ├── legacy │ ├── AndroidManifest.xml │ └── res │ │ └── values │ │ └── strings.xml │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── brouken │ │ └── player │ │ ├── BrightnessControl.java │ │ ├── CustomDefaultTimeBar.java │ │ ├── CustomDefaultTrackNameProvider.java │ │ ├── CustomPlayerView.java │ │ ├── MediaStoreChooserActivity.java │ │ ├── PlayerActivity.java │ │ ├── Prefs.java │ │ ├── SettingsActivity.java │ │ ├── SubtitleFetcher.java │ │ ├── SubtitleFinder.java │ │ ├── SubtitleUtils.java │ │ ├── Utils.java │ │ └── dtpv │ │ ├── DoubleTapPlayerView.java │ │ ├── PlayerDoubleTapListener.java │ │ ├── SeekListener.java │ │ └── youtube │ │ ├── YouTubeOverlay.java │ │ └── views │ │ ├── CircleClipTapView.java │ │ └── SecondsView.java │ └── res │ ├── drawable-anydpi-v21 │ ├── exo_ic_subtitle_off.xml │ └── exo_ic_subtitle_on.xml │ ├── drawable │ ├── controls_gradient.xml │ ├── exo_styled_controls_delete.xml │ ├── exo_styled_controls_next.xml │ ├── exo_styled_controls_pause.xml │ ├── exo_styled_controls_play.xml │ ├── ic_aspect_ratio_24dp.xml │ ├── ic_auto_rotate_24dp.xml │ ├── ic_brightness_auto_24dp.xml │ ├── ic_brightness_medium_24.xml │ ├── ic_delete_24dp_.xml │ ├── ic_fit_screen_24dp.xml │ ├── ic_folder_open_24dp.xml │ ├── ic_launcher_background.xml │ ├── ic_launcher_foreground.xml │ ├── ic_lock_24dp.xml │ ├── ic_lock_open_24dp.xml │ ├── ic_pause_24dp.xml │ ├── ic_picture_in_picture_alt_24dp.xml │ ├── ic_play_arrow_24dp.xml │ ├── ic_screen_landscape_24dp.xml │ ├── ic_screen_lock_landscape_24dp.xml │ ├── ic_screen_lock_portrait_24dp.xml │ ├── ic_screen_lock_rotation_24dp.xml │ ├── ic_screen_portrait_24dp.xml │ ├── ic_screen_rotation_24dp.xml │ ├── ic_volume_off_24dp.xml │ ├── ic_volume_up_24dp.xml │ ├── rounded_controls_background.xml │ └── shortcut_videos_foreground.xml │ ├── layout │ ├── activity_player.xml │ ├── activity_player_textureview.xml │ ├── controls.xml │ ├── exo_player_control_view.xml │ ├── exo_player_view.xml │ ├── exo_styled_settings_list.xml │ ├── settings_activity.xml │ ├── yt_overlay.xml │ └── yt_seconds_view.xml │ ├── mipmap-anydpi-v26 │ ├── ic_launcher.xml │ └── shortcut_videos.xml │ ├── mipmap-hdpi │ └── ic_launcher.png │ ├── mipmap-mdpi │ └── ic_launcher.png │ ├── mipmap-xhdpi │ ├── banner.png │ └── ic_launcher.png │ ├── mipmap-xxhdpi │ └── ic_launcher.png │ ├── mipmap-xxxhdpi │ └── ic_launcher.png │ ├── values-ar │ └── strings.xml │ ├── values-az │ └── strings.xml │ ├── values-bn │ └── strings.xml │ ├── values-cs │ └── strings.xml │ ├── values-de │ └── strings.xml │ ├── values-el │ └── strings.xml │ ├── values-es │ └── strings.xml │ ├── values-et │ └── strings.xml │ ├── values-fa │ └── strings.xml │ ├── values-fr │ └── strings.xml │ ├── values-hi │ └── strings.xml │ ├── values-hr │ └── strings.xml │ ├── values-hu │ └── strings.xml │ ├── values-in │ └── strings.xml │ ├── values-it │ └── strings.xml │ ├── values-ja │ └── strings.xml │ ├── values-ko │ └── strings.xml │ ├── values-ml │ └── strings.xml │ ├── values-ms │ └── strings.xml │ ├── values-nb-rNO │ └── strings.xml │ ├── values-notouch │ └── themes.xml │ ├── values-pa │ └── strings.xml │ ├── values-pl │ └── strings.xml │ ├── values-pt-rBR │ └── strings.xml │ ├── values-pt │ └── strings.xml │ ├── values-ro │ └── strings.xml │ ├── values-ru │ └── strings.xml │ ├── values-sr │ └── strings.xml │ ├── values-ta │ └── strings.xml │ ├── values-television │ └── themes.xml │ ├── values-th │ └── strings.xml │ ├── values-tr │ └── strings.xml │ ├── values-uk │ └── strings.xml │ ├── values-vi │ └── strings.xml │ ├── values-zh-rCN │ └── strings.xml │ ├── values-zh-rTW │ └── strings.xml │ ├── values │ ├── arrays.xml │ ├── colors.xml │ ├── dimens.xml │ ├── strings.xml │ └── themes.xml │ └── xml │ ├── locales_config.xml │ ├── network_security_config.xml │ ├── root_preferences.xml │ └── shortcuts.xml ├── build.gradle ├── com.brouken.player.yml ├── doubletapplayerview ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ └── res │ ├── drawable │ └── ic_play_triangle.xml │ ├── values-af │ └── plurals.xml │ ├── values-am │ └── plurals.xml │ ├── values-ar │ └── plurals.xml │ ├── values-az │ └── plurals.xml │ ├── values-b+sr+Latn │ └── plurals.xml │ ├── values-be │ └── plurals.xml │ ├── values-bg │ └── plurals.xml │ ├── values-bn │ └── plurals.xml │ ├── values-bs │ └── plurals.xml │ ├── values-ca │ └── plurals.xml │ ├── values-cs │ └── plurals.xml │ ├── values-da │ └── plurals.xml │ ├── values-de │ └── plurals.xml │ ├── values-el │ └── plurals.xml │ ├── values-en-rGB │ └── plurals.xml │ ├── values-en-rIN │ └── plurals.xml │ ├── values-es-rUS │ └── plurals.xml │ ├── values-es │ └── plurals.xml │ ├── values-et │ └── plurals.xml │ ├── values-eu │ └── plurals.xml │ ├── values-fa │ └── plurals.xml │ ├── values-fi │ └── plurals.xml │ ├── values-fr-rCA │ └── plurals.xml │ ├── values-fr │ └── plurals.xml │ ├── values-gl │ └── plurals.xml │ ├── values-gu │ └── plurals.xml │ ├── values-hi │ └── plurals.xml │ ├── values-hr │ └── plurals.xml │ ├── values-hu │ └── plurals.xml │ ├── values-hy │ └── plurals.xml │ ├── values-in │ └── plurals.xml │ ├── values-is │ └── plurals.xml │ ├── values-it │ └── plurals.xml │ ├── values-iw │ └── plurals.xml │ ├── values-ja │ └── plurals.xml │ ├── values-ka │ └── plurals.xml │ ├── values-kk │ └── plurals.xml │ ├── values-km │ └── plurals.xml │ ├── values-kn │ └── plurals.xml │ ├── values-ko │ └── plurals.xml │ ├── values-ky │ └── plurals.xml │ ├── values-lo │ └── plurals.xml │ ├── values-lt │ └── plurals.xml │ ├── values-lv │ └── plurals.xml │ ├── values-mk │ └── plurals.xml │ ├── values-ml │ └── plurals.xml │ ├── values-mn │ └── plurals.xml │ ├── values-mr │ └── plurals.xml │ ├── values-ms │ └── plurals.xml │ ├── values-my │ └── plurals.xml │ ├── values-nb │ └── plurals.xml │ ├── values-ne │ └── plurals.xml │ ├── values-nl │ └── plurals.xml │ ├── values-pa │ └── plurals.xml │ ├── values-pl │ └── plurals.xml │ ├── values-pt-rBR │ └── plurals.xml │ ├── values-pt-rPT │ └── plurals.xml │ ├── values-ro │ └── plurals.xml │ ├── values-ru │ └── plurals.xml │ ├── values-si │ └── plurals.xml │ ├── values-sk │ └── plurals.xml │ ├── values-sl │ └── plurals.xml │ ├── values-sq │ └── plurals.xml │ ├── values-sr │ └── plurals.xml │ ├── values-sv │ └── plurals.xml │ ├── values-sw │ └── plurals.xml │ ├── values-ta │ └── plurals.xml │ ├── values-te │ └── plurals.xml │ ├── values-th │ └── plurals.xml │ ├── values-tl │ └── plurals.xml │ ├── values-tr │ └── plurals.xml │ ├── values-uk │ └── plurals.xml │ ├── values-ur │ └── plurals.xml │ ├── values-uz │ └── plurals.xml │ ├── values-vi │ └── plurals.xml │ ├── values-zh-rCN │ └── plurals.xml │ ├── values-zh-rHK │ └── plurals.xml │ ├── values-zh-rTW │ └── plurals.xml │ ├── values-zu │ └── plurals.xml │ └── values │ ├── dtpv.xml │ ├── plurals.xml │ ├── public.xml │ └── yt_overlay.xml ├── fastlane └── metadata │ └── android │ ├── cs │ ├── changelogs │ │ └── 88.txt │ ├── full_description.txt │ ├── full_description_google_extra.txt │ ├── short_description.txt │ └── short_description_google.txt │ ├── de-DE │ ├── full_description.txt │ ├── full_description_google_extra.txt │ ├── short_description.txt │ └── short_description_google.txt │ ├── el │ ├── full_description.txt │ ├── full_description_google_extra.txt │ ├── short_description.txt │ └── short_description_google.txt │ ├── en-US │ ├── changelogs │ │ ├── 45.txt │ │ └── 88.txt │ ├── full_description.txt │ ├── full_description_google_extra.txt │ ├── images │ │ ├── featureGraphic.png │ │ ├── icon.png │ │ ├── phoneScreenshots │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ ├── 3.png │ │ │ └── 4.png │ │ ├── readmeScreenshots │ │ │ ├── caption_preferences_1.png │ │ │ ├── caption_preferences_2.png │ │ │ ├── files_1.png │ │ │ └── files_2.png │ │ ├── tvBanner.png │ │ └── tvScreenshots │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ └── 3.png │ ├── short_description.txt │ ├── short_description_google.txt │ └── title.txt │ ├── fr │ ├── full_description.txt │ ├── full_description_google_extra.txt │ ├── short_description.txt │ └── short_description_google.txt │ ├── hr │ ├── full_description.txt │ ├── full_description_google_extra.txt │ ├── short_description.txt │ └── short_description_google.txt │ ├── hu │ ├── full_description.txt │ ├── full_description_google_extra.txt │ ├── short_description.txt │ └── short_description_google.txt │ ├── it │ ├── full_description.txt │ ├── full_description_google_extra.txt │ ├── short_description.txt │ └── short_description_google.txt │ ├── nb-NO │ ├── full_description.txt │ ├── full_description_google_extra.txt │ ├── short_description.txt │ └── short_description_google.txt │ ├── pt │ ├── full_description_google_extra.txt │ ├── short_description.txt │ └── short_description_google.txt │ ├── ru │ ├── full_description.txt │ ├── full_description_google_extra.txt │ ├── short_description.txt │ └── short_description_google.txt │ ├── sr │ ├── full_description.txt │ ├── full_description_google_extra.txt │ ├── short_description.txt │ └── short_description_google.txt │ ├── th │ ├── full_description.txt │ ├── full_description_google_extra.txt │ ├── short_description.txt │ └── short_description_google.txt │ ├── uk │ └── short_description.txt │ └── zh-CN │ ├── full_description.txt │ ├── full_description_google_extra.txt │ ├── images │ └── phoneScreenshots │ │ ├── 2.png │ │ └── 3.png │ ├── short_description.txt │ └── short_description_google.txt ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── web_hi_res_512.png /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Open '...' 16 | 2. Select '....' 17 | 3. See error 18 | 19 | **Expected behavior** 20 | A clear and concise description of what you expected to happen. 21 | 22 | **Device (please complete the following information):** 23 | - Model: [e.g. Samsung Galaxy S22] 24 | - OS: [e.g. Android 13] 25 | - Version [e.g. 0.134] 26 | 27 | **Media** 28 | If applicable, add a short media sample which triggers the problem. 29 | 30 | **Additional context** 31 | Add any other context about the problem here. 32 | -------------------------------------------------------------------------------- /.github/workflows/android-build.yml: -------------------------------------------------------------------------------- 1 | name: Android Build APK 2 | 3 | on: 4 | push: 5 | tags: 6 | - 'v0.*' 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - uses: actions/checkout@v4 14 | 15 | - uses: actions/setup-java@v4 16 | with: 17 | distribution: temurin 18 | java-version: 17 19 | cache: gradle 20 | 21 | - run: echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 --decode > ${GITHUB_WORKSPACE}/keystore.jks 22 | 23 | - run: ./gradlew assembleRelease bundleRelease 24 | -Pandroid.injected.signing.store.file=${GITHUB_WORKSPACE}/keystore.jks 25 | -Pandroid.injected.signing.store.password=${{ secrets.KEYSTORE_PASSWORD }} 26 | -Pandroid.injected.signing.key.alias=key 27 | -Pandroid.injected.signing.key.password=${{ secrets.KEYSTORE_PASSWORD }} 28 | 29 | - uses: softprops/action-gh-release@v2 30 | with: 31 | files: | 32 | app/build/outputs/apk/latestUniversal/release/*.apk 33 | app/build/outputs/apk/legacyUniversal/release/*.apk 34 | prerelease: true 35 | draft: true 36 | 37 | - uses: actions/upload-artifact@v4 38 | with: 39 | name: release 40 | path: | 41 | app/build/outputs/apk/*/release/*.apk 42 | app/build/outputs/bundle/*/*.aab 43 | -------------------------------------------------------------------------------- /.github/workflows/android.yml: -------------------------------------------------------------------------------- 1 | name: Android CI 2 | 3 | on: 4 | push: 5 | branches: [master] 6 | pull_request: 7 | branches: [master] 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - uses: actions/checkout@v2 15 | with: 16 | submodules: recursive 17 | - name: set up JDK 17 18 | uses: actions/setup-java@v1 19 | with: 20 | java-version: 17 21 | - name: Grant execute permission for gradlew 22 | run: chmod +x gradlew 23 | - name: Build with Gradle 24 | run: ./gradlew build 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/ 5 | .DS_Store 6 | /build 7 | /captures 8 | .externalNativeBuild 9 | .cxx 10 | local.properties 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | This is free and unencumbered software released into the public domain. 2 | 3 | Anyone is free to copy, modify, publish, use, compile, sell, or 4 | distribute this software, either in source code form or as a compiled 5 | binary, for any purpose, commercial or non-commercial, and by any 6 | means. 7 | 8 | In jurisdictions that recognize copyright laws, the author or authors 9 | of this software dedicate any and all copyright interest in the 10 | software to the public domain. We make this dedication for the benefit 11 | of the public at large and to the detriment of our heirs and 12 | successors. We intend this dedication to be an overt act of 13 | relinquishment in perpetuity of all present and future rights to this 14 | software under copyright law. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 19 | IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | 24 | For more information, please refer to 25 | -------------------------------------------------------------------------------- /android-file-chooser/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /android-file-chooser/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | def VERSION_NAME = project.VERSION_NAME 4 | def VERSION_CODE = Integer.parseInt(project.VERSION_CODE) 5 | 6 | def ANDROID_COMPILE_SDK_VERSION = Integer.parseInt(project.ANDROID_COMPILE_SDK_VERSION) 7 | def ANDROID_TARGET_SDK_VERSION = Integer.parseInt(project.ANDROID_TARGET_SDK_VERSION) 8 | //def ANDROID_BUILD_TOOLS_VERSION = project.ANDROID_BUILD_TOOLS_VERSION 9 | def ANDROID_MIN_SDK_VERSION = Integer.parseInt(project.ANDROID_MIN_SDK_VERSION) 10 | 11 | def JAVA_COMPATIBILITY = JavaVersion.valueOf(project.JAVA_COMPATIBILITY) 12 | 13 | android { 14 | namespace 'com.obsez.android.lib.filechooser' 15 | compileSdkVersion ANDROID_COMPILE_SDK_VERSION 16 | //buildToolsVersion ANDROID_BUILD_TOOLS_VERSION 17 | resourcePrefix "obsez_fc__" 18 | 19 | defaultConfig { 20 | minSdkVersion ANDROID_MIN_SDK_VERSION 21 | targetSdkVersion ANDROID_TARGET_SDK_VERSION 22 | } 23 | buildTypes { 24 | release { 25 | minifyEnabled false 26 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 27 | } 28 | // debug { 29 | // buildConfig "public final static boolean HAS_PROTOTYPE_FEATURE = true;" 30 | // } 31 | // release { 32 | // buildConfig "public final static boolean HAS_PROTOTYPE_FEATURE = false;" 33 | // } 34 | } 35 | 36 | compileOptions { 37 | sourceCompatibility JAVA_COMPATIBILITY 38 | targetCompatibility JAVA_COMPATIBILITY 39 | } 40 | lint { 41 | abortOnError false 42 | checkReleaseBuilds false 43 | disable 'InvalidPackage', 'OldTargetApi', 'IconDensities', 'deprecation' 44 | ignoreWarnings true 45 | lintConfig file('lint.xml') 46 | quiet true 47 | } 48 | } 49 | 50 | dependencies { 51 | implementation fileTree(dir: 'libs', include: ['*.jar']) 52 | implementation 'androidx.appcompat:appcompat:1.7.0' 53 | } 54 | -------------------------------------------------------------------------------- /android-file-chooser/gradle.properties: -------------------------------------------------------------------------------- 1 | # Global variables 2 | VERSION_NAME=1.2.0 3 | VERSION_CODE=102000 4 | GROUP=com.obsez.android.lib.filechooser 5 | 6 | POM_DESCRIPTION=Android File Chooser Library 7 | POM_URL=https://github.com/hedzr/android-file-chooser 8 | POM_SCM_URL=https://github.com/hedzr/android-file-chooser.git 9 | POM_SCM_CONNECTION=scm:git@github.com:hedzr/android-file-chooser.git 10 | POM_SCM_DEV_CONNECTION=scm:git@github.com:hedzr/android-file-chooser.git 11 | POM_LICENCE_NAME=The Apache Software License, Version 2.0 12 | POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt 13 | POM_LICENCE_DIST=repo 14 | POM_DEVELOPER_ID=hedzr 15 | POM_DEVELOPER_NAME=Hedzr Yeh 16 | POM_DEVELOPER_EMAIL=hedzrz@gmail.com 17 | 18 | ANDROID_COMPILE_SDK_VERSION=34 19 | #ANDROID_BUILD_TOOLS_VERSION=28.0.3 20 | ANDROID_MIN_SDK_VERSION=21 21 | ANDROID_TARGET_SDK_VERSION=34 22 | JAVA_COMPATIBILITY=VERSION_1_8 23 | 24 | # Project-wide Gradle settings. 25 | 26 | # IDE (e.g. Android Studio) users: 27 | # Gradle settings configured through the IDE *will override* 28 | # any settings specified in this file. 29 | 30 | # For more details on how to configure your build environment visit 31 | # http://www.gradle.org/docs/current/userguide/build_environment.html 32 | 33 | # Specifies the JVM arguments used for the daemon process. 34 | # The setting is particularly useful for tweaking memory settings. 35 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 36 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 37 | 38 | # When configured, Gradle will run in incubating parallel mode. 39 | # This option should only be used with decoupled projects. More details, visit 40 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 41 | # org.gradle.parallel=true 42 | 43 | POM_NAME=Android File Chooser Library 44 | POM_ARTIFACT_ID=filechooser 45 | POM_PACKAGING=aar 46 | -------------------------------------------------------------------------------- /android-file-chooser/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /opt/bin/android-sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/java/com/obsez/android/lib/filechooser/defBackPressed.java: -------------------------------------------------------------------------------- 1 | package com.obsez.android.lib.filechooser; 2 | 3 | import androidx.appcompat.app.AlertDialog; 4 | import androidx.appcompat.app.AppCompatDialog; 5 | 6 | import java.lang.ref.WeakReference; 7 | 8 | class defBackPressed implements ChooserDialog.OnBackPressedListener { 9 | private WeakReference _c; 10 | 11 | defBackPressed(ChooserDialog e) { 12 | this._c = new WeakReference<>(e); 13 | } 14 | 15 | @Override 16 | public void onBackPressed(AlertDialog dialog) { 17 | if (_c.get()._entries.size() > 0 18 | && (_c.get()._entries.get(0).getName().equals(".."))) { 19 | if (_onBackPressed != null) { 20 | _onBackPressed.onBackPressed(dialog); 21 | } else { 22 | _defaultBack.onBackPressed(dialog); 23 | } 24 | } else { 25 | if (_onLastBackPressed != null) { 26 | _onLastBackPressed.onBackPressed(dialog); 27 | } else { 28 | _defaultLastBack.onBackPressed(dialog); 29 | } 30 | } 31 | } 32 | 33 | ChooserDialog.OnBackPressedListener _onBackPressed; 34 | ChooserDialog.OnBackPressedListener _onLastBackPressed; 35 | 36 | private static final ChooserDialog.OnBackPressedListener _defaultLastBack = AppCompatDialog::cancel; 37 | private static final ChooserDialog.OnBackPressedListener _defaultBack = AppCompatDialog::cancel; 38 | } 39 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/java/com/obsez/android/lib/filechooser/internals/ExtFileFilter.java: -------------------------------------------------------------------------------- 1 | package com.obsez.android.lib.filechooser.internals; 2 | 3 | import java.io.File; 4 | import java.io.FileFilter; 5 | 6 | /** 7 | * Created by coco on 6/7/15. 8 | */ 9 | public class ExtFileFilter implements FileFilter { 10 | boolean m_allowHidden; 11 | boolean m_onlyDirectory; 12 | String[] m_ext; 13 | 14 | public ExtFileFilter() { 15 | this(false, false); 16 | } 17 | 18 | public ExtFileFilter(String... ext_list) { 19 | this(false, false, ext_list); 20 | } 21 | 22 | public ExtFileFilter(boolean dirOnly, boolean hidden, String... ext_list) { 23 | m_allowHidden = hidden; 24 | m_onlyDirectory = dirOnly; 25 | m_ext = ext_list; 26 | } 27 | 28 | @Override 29 | public boolean accept(File pathname) { 30 | if (!m_allowHidden) { 31 | if (pathname.isHidden()) { 32 | return false; 33 | } 34 | } 35 | 36 | if (m_onlyDirectory) { 37 | if (!pathname.isDirectory()) { 38 | return false; 39 | } 40 | } 41 | 42 | if (m_ext == null) { 43 | return true; 44 | } 45 | 46 | if (pathname.isDirectory()) { 47 | return true; 48 | } 49 | 50 | String ext = FileUtil.getExtensionWithoutDot(pathname); 51 | for (String e : m_ext) { 52 | if (ext.equalsIgnoreCase(e)) { 53 | return true; 54 | } 55 | } 56 | return false; 57 | } 58 | 59 | } 60 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/java/com/obsez/android/lib/filechooser/internals/RegexFileFilter.java: -------------------------------------------------------------------------------- 1 | package com.obsez.android.lib.filechooser.internals; 2 | 3 | import java.io.File; 4 | import java.io.FileFilter; 5 | import java.util.regex.Pattern; 6 | 7 | /** 8 | * Created by coco on 6/7/15. 9 | */ 10 | public class RegexFileFilter implements FileFilter { 11 | boolean m_allowHidden; 12 | boolean m_onlyDirectory; 13 | Pattern m_pattern; 14 | 15 | public RegexFileFilter() { 16 | this(null); 17 | } 18 | 19 | public RegexFileFilter(Pattern ptn) { 20 | this(false, false, ptn); 21 | } 22 | 23 | public RegexFileFilter(boolean dirOnly, boolean hidden, String ptn) { 24 | m_allowHidden = hidden; 25 | m_onlyDirectory = dirOnly; 26 | m_pattern = Pattern.compile(ptn, Pattern.CASE_INSENSITIVE); 27 | } 28 | 29 | public RegexFileFilter(boolean dirOnly, boolean hidden, String ptn, int flags) { 30 | m_allowHidden = hidden; 31 | m_onlyDirectory = dirOnly; 32 | m_pattern = Pattern.compile(ptn, flags); 33 | } 34 | 35 | public RegexFileFilter(boolean dirOnly, boolean hidden, Pattern ptn) { 36 | m_allowHidden = hidden; 37 | m_onlyDirectory = dirOnly; 38 | m_pattern = ptn; 39 | } 40 | 41 | @Override 42 | public boolean accept(File pathname) { 43 | if (!m_allowHidden) { 44 | if (pathname.isHidden()) { 45 | return false; 46 | } 47 | } 48 | 49 | if (m_onlyDirectory) { 50 | if (!pathname.isDirectory()) { 51 | return false; 52 | } 53 | } 54 | 55 | if (m_pattern == null) { 56 | return true; 57 | } 58 | 59 | if (pathname.isDirectory()) { 60 | return true; 61 | } 62 | 63 | String name = pathname.getName(); 64 | if (m_pattern.matcher(name).matches()) { 65 | return true; 66 | } 67 | return false; 68 | } 69 | 70 | } 71 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/java/com/obsez/android/lib/filechooser/internals/WrappedDrawable.java: -------------------------------------------------------------------------------- 1 | package com.obsez.android.lib.filechooser.internals; 2 | 3 | import android.graphics.Canvas; 4 | import android.graphics.ColorFilter; 5 | import android.graphics.PixelFormat; 6 | import android.graphics.drawable.Drawable; 7 | 8 | public class WrappedDrawable extends Drawable { 9 | 10 | private final Drawable _drawable; 11 | 12 | protected Drawable getDrawable() { 13 | return _drawable; 14 | } 15 | 16 | public WrappedDrawable(Drawable drawable) { 17 | super(); 18 | _drawable = drawable; 19 | } 20 | 21 | public WrappedDrawable(Drawable drawable, float widthInDp, float heightInDp) { 22 | super(); 23 | _drawable = drawable; 24 | setBounds(0, 0, (int) UiUtil.dip2px(widthInDp), (int) UiUtil.dip2px(heightInDp)); 25 | } 26 | 27 | @Override 28 | public void setBounds(int left, int top, int right, int bottom) { 29 | //update bounds to get correctly 30 | super.setBounds(left, top, right, bottom); 31 | Drawable drawable = getDrawable(); 32 | if (drawable != null) { 33 | drawable.setBounds(left, top, right, bottom); 34 | } 35 | } 36 | 37 | public void setBoundsInDp(float left, float top, float right, float bottom) { 38 | //update bounds to get correctly 39 | super.setBounds((int) UiUtil.dip2px(left), 40 | (int) UiUtil.dip2px(top), 41 | (int) UiUtil.dip2px(right), 42 | (int) UiUtil.dip2px(bottom)); 43 | Drawable drawable = getDrawable(); 44 | if (drawable != null) { 45 | drawable.setBounds((int) UiUtil.dip2px(left), 46 | (int) UiUtil.dip2px(top), 47 | (int) UiUtil.dip2px(right), 48 | (int) UiUtil.dip2px(bottom)); 49 | } 50 | } 51 | 52 | @Override 53 | public void setAlpha(int alpha) { 54 | Drawable drawable = getDrawable(); 55 | if (drawable != null) { 56 | drawable.setAlpha(alpha); 57 | } 58 | } 59 | 60 | @Override 61 | public void setColorFilter(ColorFilter colorFilter) { 62 | Drawable drawable = getDrawable(); 63 | if (drawable != null) { 64 | drawable.setColorFilter(colorFilter); 65 | } 66 | } 67 | 68 | @Override 69 | public int getOpacity() { 70 | Drawable drawable = getDrawable(); 71 | return drawable != null 72 | ? drawable.getOpacity() 73 | : PixelFormat.UNKNOWN; 74 | } 75 | 76 | @Override 77 | public void draw(Canvas canvas) { 78 | Drawable drawable = getDrawable(); 79 | if (drawable != null) { 80 | drawable.draw(canvas); 81 | } 82 | } 83 | 84 | @Override 85 | public int getIntrinsicWidth() { 86 | Drawable drawable = getDrawable(); 87 | return drawable != null 88 | ? drawable.getBounds().width() 89 | : 0; 90 | } 91 | 92 | @Override 93 | public int getIntrinsicHeight() { 94 | Drawable drawable = getDrawable(); 95 | return drawable != null ? 96 | drawable.getBounds().height() 97 | : 0; 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/java/com/obsez/android/lib/filechooser/permissions/PermissionsUtil.java: -------------------------------------------------------------------------------- 1 | package com.obsez.android.lib.filechooser.permissions; 2 | 3 | import android.content.Context; 4 | import android.content.Intent; 5 | import android.os.Build; 6 | import android.util.SparseArray; 7 | 8 | import androidx.annotation.NonNull; 9 | import androidx.annotation.Nullable; 10 | 11 | import java.util.Random; 12 | 13 | public final class PermissionsUtil { 14 | @SuppressWarnings("unused") 15 | public static final String TAG = PermissionsUtil.class.getName(); 16 | 17 | public interface OnPermissionListener { 18 | void onPermissionGranted(final String[] permissions); 19 | 20 | void onPermissionDenied(final String[] permissions); 21 | 22 | void onShouldShowRequestPermissionRationale(final String[] permissions); 23 | } 24 | 25 | public static void checkPermissions(@NonNull Context context, 26 | @Nullable final OnPermissionListener onPermissionListener, final String... permissions) { 27 | if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M || permissions.length == 0) { 28 | if (onPermissionListener != null) onPermissionListener.onPermissionGranted(permissions); 29 | return; 30 | } 31 | 32 | int requestCode = _random.nextInt(1024); 33 | _permissionListeners.put(requestCode, onPermissionListener); 34 | 35 | context.startActivity(new Intent(context, PermissionActivity.class) 36 | .addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION) 37 | .putExtra(PermissionActivity.INTENT_EXTRA_PERMISSIONS, permissions) 38 | .putExtra(PermissionActivity.INTENT_EXTRA_REQUEST_CODE, requestCode)); 39 | } 40 | 41 | private static final SparseArray _permissionListeners = new SparseArray<>(); 42 | private static final Random _random = new Random(); 43 | 44 | static OnPermissionListener getPermissionListener(final int requestCode) { 45 | OnPermissionListener listener = _permissionListeners.get(requestCode, null); 46 | _permissionListeners.remove(requestCode); 47 | return listener; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/java/com/obsez/android/lib/filechooser/tool/RootFile.java: -------------------------------------------------------------------------------- 1 | package com.obsez.android.lib.filechooser.tool; 2 | 3 | import java.io.File; 4 | 5 | public final class RootFile extends File { 6 | private String name; 7 | 8 | public RootFile(String path, String name) { 9 | super(path); 10 | this.name = name; 11 | } 12 | 13 | @Override 14 | public String getName() { 15 | return this.name; 16 | } 17 | 18 | @Override 19 | public boolean isDirectory() { 20 | return true; 21 | } 22 | 23 | @Override 24 | public boolean isHidden() { 25 | return false; 26 | } 27 | 28 | @Override 29 | public long lastModified() { 30 | return 0L; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/drawable-hdpi/ic_chooser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/android-file-chooser/src/main/res/drawable-hdpi/ic_chooser.png -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/drawable-hdpi/ic_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/android-file-chooser/src/main/res/drawable-hdpi/ic_file.png -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/drawable-hdpi/ic_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/android-file-chooser/src/main/res/drawable-hdpi/ic_folder.png -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/drawable-hdpi/ic_provider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/android-file-chooser/src/main/res/drawable-hdpi/ic_provider.png -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/drawable-mdpi/ic_chooser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/android-file-chooser/src/main/res/drawable-mdpi/ic_chooser.png -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/drawable-mdpi/ic_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/android-file-chooser/src/main/res/drawable-mdpi/ic_file.png -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/drawable-mdpi/ic_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/android-file-chooser/src/main/res/drawable-mdpi/ic_folder.png -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/drawable-mdpi/ic_provider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/android-file-chooser/src/main/res/drawable-mdpi/ic_provider.png -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/drawable-mdpi/listview_item_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/drawable-mdpi/listview_item_selector_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/drawable-xhdpi/ic_chooser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/android-file-chooser/src/main/res/drawable-xhdpi/ic_chooser.png -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/drawable-xhdpi/ic_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/android-file-chooser/src/main/res/drawable-xhdpi/ic_file.png -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/drawable-xhdpi/ic_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/android-file-chooser/src/main/res/drawable-xhdpi/ic_folder.png -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/drawable-xhdpi/ic_provider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/android-file-chooser/src/main/res/drawable-xhdpi/ic_provider.png -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/drawable-xxhdpi/ic_chooser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/android-file-chooser/src/main/res/drawable-xxhdpi/ic_chooser.png -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/drawable-xxhdpi/ic_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/android-file-chooser/src/main/res/drawable-xxhdpi/ic_file.png -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/drawable-xxhdpi/ic_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/android-file-chooser/src/main/res/drawable-xxhdpi/ic_folder.png -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/drawable-xxhdpi/ic_provider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/android-file-chooser/src/main/res/drawable-xxhdpi/ic_provider.png -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/drawable/ic_add_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/drawable/ic_delete_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/drawable/ic_menu_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/layout/li_row_textview.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 22 | 23 | 32 | 33 | 41 | 42 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values-ca/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Carpeta buida 5 | S\'ha tret o desmuntat l\'emmagatzematge. 6 | Seleccioneu un fitxer 7 | Error en seleccionar el fitxer 8 | 9 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values-de/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Leerer Ordner 4 | Speicher wurde entfernt. 5 | Wähle eine Datei 6 | Fehler beim Öffnen der Datei 7 | 8 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values-es/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Directorio vacío 5 | Se ha retirado o desmontado el almacenamiento. 6 | Seleccione un archivo 7 | Error al seleccionar el archivo 8 | 9 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values-fr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Dossier vide 5 | Le stockage a été enlevé ou démonté. 6 | Sélectionnez un fichier 7 | Erreur lors de la sélection du fichier 8 | 9 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values-ga/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Comhadlann fholamh 5 | Baineadh amach an gléas stórála nó dínascadh é. 6 | Roghnaigh comhad 7 | Tharla botún fad is a bhí comhad á roghnú 8 | 9 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values-in/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Direktori Kosong 6 | Penyimpanan dilepaskan atau dicabut 7 | Pilih file 8 | Gagal memilih File 9 | Penyimpanan internal 10 | 11 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values-in/strings_0.xml: -------------------------------------------------------------------------------- 1 | 2 | Pilih 3 | Pilih kamus 4 | Pilih 5 | Batal 6 | Folder baru 7 | Hapus 8 | Batal 9 | OK 10 | 11 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values-it/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Directory vuota 5 | Lo spazio di archiviazione è stato rimosso o smontato. 6 | Selezionare un file 7 | Errore nel selezionare il File 8 | 9 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values-ka/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ცარიელი საქაღალდე 4 | მეხსიერება მოხსნილია 5 | აირჩიეთ ფაილი 6 | შეცდომა ფაილის არჩევისას 7 | შიდა მეხსიერება 8 | 9 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values-ka/strings_0.xml: -------------------------------------------------------------------------------- 1 | 2 | აირჩიეთ 3 | აირჩიეთ საქაღალდე 4 | არჩევა 5 | გაუქმება 6 | ახალი საქაღალდე 7 | წაშლა 8 | გაუქმება 9 | შენახვა 10 | 11 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values-ko/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 빈 디렉토리 5 | 저장소가 제거되었습니다. 6 | 파일 선택 7 | 파일 선택 오류 8 | 9 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values-pl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Pusty katalog 5 | Pamięć została usunięta lub odmontowana. 6 | Wybierz plik 7 | Błąd, podczas wybierania pliku 8 | 9 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values-pt-rBR/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Pasta Vazia 5 | Unidade externa removida ou não preparada. 6 | Selecione um Arquivo 7 | Erro ao selecionar o Arquivo 8 | 9 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values-ru/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Пустая папка 5 | Storage was removed or unmounted. 6 | Выберите файл 7 | Ошибка при выборе файла 8 | 9 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values-v11/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | Choose a file 19 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values-v19/bool.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | false 5 | true 6 | 7 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values-zh-rCN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 空目录 19 | 存储卡已被移除或卸载。 20 | 选择一个文件 21 | 选择文件发生了错误 22 | 内部存储 23 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values-zh-rCN/strings_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 选择 3 | 选择一个字典文件 4 | 选择 5 | 取消 6 | 新建文件夹 7 | 删除 8 | 放弃 9 | 确定 10 | 11 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values-zh-rTW/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 空目錄 19 | 存儲卡已被移除或卸載。 20 | 選擇一個文件 21 | 選擇文件發生了錯誤 22 | 內部存儲 23 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values-zh-rTW/strings_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 選擇 3 | 選擇一個字典文件 4 | 選擇 5 | 取消 6 | 新建目錄 7 | 刪除 8 | 放棄 9 | 確定 10 | 11 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values/attr.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values/bool.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | true 5 | false 6 | 7 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #5f6368 4 | #212121 5 | #fffbfbfb 6 | #40444444 7 | #40888888 8 | 9 | #bbbbbb 10 | #fefefe 11 | #303030 12 | #00ffffff 13 | #30ffffff 14 | #303030 15 | #00000000 16 | 17 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 0dp 18 | 8dp 19 | 20 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | Empty Directory 19 | Storage was removed or unmounted. 20 | Select a file 21 | Error selecting File 22 | Internal storage 23 | -------------------------------------------------------------------------------- /android-file-chooser/src/main/res/values/strings_0.xml: -------------------------------------------------------------------------------- 1 | 2 | Choose 3 | Pick a dictionary 4 | Select 5 | Cancel 6 | New folder 7 | Delete 8 | Cancel 9 | OK 10 | 11 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /app/libs/README.md: -------------------------------------------------------------------------------- 1 | The binary ffmpeg extension was build with following decoders: 2 | 3 | ``` 4 | ENABLED_DECODERS=(vorbis opus flac alac pcm_mulaw pcm_alaw mp3 amrnb amrwb aac ac3 eac3 dca mlp truehd) 5 | ``` 6 | 7 | Complete [build instructions](https://github.com/androidx/media/blob/release/libraries/decoder_ffmpeg/README.md). 8 | 9 | To assemble ``.aar``: 10 | 11 | ``` 12 | ./gradlew :extension-ffmpeg:bundleReleaseAar 13 | ``` 14 | -------------------------------------------------------------------------------- /app/libs/lib-decoder-av1-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/app/libs/lib-decoder-av1-release.aar -------------------------------------------------------------------------------- /app/libs/lib-decoder-ffmpeg-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/app/libs/lib-decoder-ffmpeg-release.aar -------------------------------------------------------------------------------- /app/libs/lib-decoder-iamf-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/app/libs/lib-decoder-iamf-release.aar -------------------------------------------------------------------------------- /app/libs/lib-decoder-mpegh-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/app/libs/lib-decoder-mpegh-release.aar -------------------------------------------------------------------------------- /app/libs/lib-exoplayer-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/app/libs/lib-exoplayer-release.aar -------------------------------------------------------------------------------- /app/libs/lib-extractor-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/app/libs/lib-extractor-release.aar -------------------------------------------------------------------------------- /app/libs/lib-ui-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/app/libs/lib-ui-release.aar -------------------------------------------------------------------------------- /app/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 -------------------------------------------------------------------------------- /app/src/accrescent/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/latest/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/legacy/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/legacy/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Just Player (Legacy) 4 | -------------------------------------------------------------------------------- /app/src/main/java/com/brouken/player/BrightnessControl.java: -------------------------------------------------------------------------------- 1 | package com.brouken.player; 2 | 3 | import android.app.Activity; 4 | import android.view.WindowManager; 5 | 6 | class BrightnessControl { 7 | 8 | private final Activity activity; 9 | 10 | public int currentBrightnessLevel = -1; 11 | 12 | public BrightnessControl(Activity activity) { 13 | this.activity = activity; 14 | } 15 | 16 | public float getScreenBrightness() { 17 | return activity.getWindow().getAttributes().screenBrightness; 18 | } 19 | 20 | public void setScreenBrightness(final float brightness) { 21 | WindowManager.LayoutParams lp = activity.getWindow().getAttributes(); 22 | lp.screenBrightness = brightness; 23 | activity.getWindow().setAttributes(lp); 24 | } 25 | 26 | public void changeBrightness(final CustomPlayerView playerView, final boolean increase, final boolean canSetAuto) { 27 | int newBrightnessLevel = (increase ? currentBrightnessLevel + 1 : currentBrightnessLevel - 1); 28 | 29 | if (canSetAuto && newBrightnessLevel < 0) 30 | currentBrightnessLevel = -1; 31 | else if (newBrightnessLevel >= 0 && newBrightnessLevel <= 30) 32 | currentBrightnessLevel = newBrightnessLevel; 33 | 34 | if (currentBrightnessLevel == -1 && canSetAuto) 35 | setScreenBrightness(WindowManager.LayoutParams.BRIGHTNESS_OVERRIDE_NONE); 36 | else if (currentBrightnessLevel != -1) 37 | setScreenBrightness(levelToBrightness(currentBrightnessLevel)); 38 | 39 | playerView.setHighlight(false); 40 | 41 | if (currentBrightnessLevel == -1 && canSetAuto) { 42 | playerView.setIconBrightnessAuto(); 43 | playerView.setCustomErrorMessage(""); 44 | } else { 45 | playerView.setIconBrightness(); 46 | playerView.setCustomErrorMessage(" " + currentBrightnessLevel); 47 | } 48 | } 49 | 50 | float levelToBrightness(final int level) { 51 | final double d = 0.064 + 0.936 / (double) 30 * (double) level; 52 | return (float) (d * d); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /app/src/main/java/com/brouken/player/CustomDefaultTimeBar.java: -------------------------------------------------------------------------------- 1 | package com.brouken.player; 2 | 3 | import android.content.Context; 4 | import android.graphics.Rect; 5 | import android.util.AttributeSet; 6 | import android.view.MotionEvent; 7 | 8 | import androidx.annotation.Nullable; 9 | import androidx.media3.ui.DefaultTimeBar; 10 | 11 | import java.lang.reflect.Field; 12 | import java.lang.reflect.InvocationTargetException; 13 | import java.lang.reflect.Method; 14 | 15 | class CustomDefaultTimeBar extends DefaultTimeBar { 16 | 17 | Rect scrubberBar; 18 | private boolean scrubbing; 19 | private int scrubbingStartX; 20 | 21 | public CustomDefaultTimeBar(Context context) { 22 | this(context, null); 23 | } 24 | 25 | public CustomDefaultTimeBar(Context context, @Nullable AttributeSet attrs) { 26 | this(context, attrs, 0); 27 | } 28 | 29 | public CustomDefaultTimeBar(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { 30 | this(context, attrs, defStyleAttr, attrs); 31 | } 32 | 33 | public CustomDefaultTimeBar(Context context, @Nullable AttributeSet attrs, int defStyleAttr, @Nullable AttributeSet timebarAttrs) { 34 | this(context, attrs, defStyleAttr, timebarAttrs, 0); 35 | } 36 | 37 | public CustomDefaultTimeBar(Context context, @Nullable AttributeSet attrs, int defStyleAttr, @Nullable AttributeSet timebarAttrs, int defStyleRes) { 38 | super(context, attrs, defStyleAttr, timebarAttrs, defStyleRes); 39 | try { 40 | Field field = DefaultTimeBar.class.getDeclaredField("scrubberBar"); 41 | field.setAccessible(true); 42 | scrubberBar = (Rect) field.get(this); 43 | } catch (NoSuchFieldException | IllegalAccessException e) { 44 | e.printStackTrace(); 45 | } 46 | } 47 | 48 | @Override 49 | public boolean onTouchEvent(MotionEvent event) { 50 | if (event.getAction() == MotionEvent.ACTION_DOWN && scrubberBar != null) { 51 | scrubbing = false; 52 | scrubbingStartX = (int)event.getX(); 53 | final int distanceFromScrubber = Math.abs(scrubberBar.right - scrubbingStartX); 54 | if (distanceFromScrubber > Utils.dpToPx(24)) 55 | return true; 56 | else 57 | scrubbing = true; 58 | } 59 | if (!scrubbing && event.getAction() == MotionEvent.ACTION_MOVE && scrubberBar != null) { 60 | final int distanceFromStart = Math.abs(((int)event.getX()) - scrubbingStartX); 61 | if (distanceFromStart > Utils.dpToPx(6)) { 62 | scrubbing = true; 63 | try { 64 | final Method method = DefaultTimeBar.class.getDeclaredMethod("startScrubbing", long.class); 65 | method.setAccessible(true); 66 | method.invoke(this, (long) 0); 67 | } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { 68 | e.printStackTrace(); 69 | } 70 | } else { 71 | return true; 72 | } 73 | } 74 | return super.onTouchEvent(event); 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /app/src/main/java/com/brouken/player/SubtitleFinder.java: -------------------------------------------------------------------------------- 1 | package com.brouken.player; 2 | 3 | import android.net.Uri; 4 | 5 | import androidx.media3.common.util.Util; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | import okhttp3.HttpUrl; 11 | 12 | public class SubtitleFinder { 13 | 14 | private PlayerActivity activity; 15 | private Uri baseUri; 16 | private String path; 17 | private final List urls; 18 | 19 | public SubtitleFinder(PlayerActivity activity, Uri uri) { 20 | this.activity = activity; 21 | path = uri.getPath(); 22 | path = path.substring(0, path.lastIndexOf('.')); 23 | baseUri = uri; 24 | urls = new ArrayList<>(); 25 | } 26 | 27 | public static boolean isUriCompatible(Uri uri) { 28 | String pth = uri.getPath(); 29 | if (pth != null) { 30 | return pth.lastIndexOf('.') > -1; 31 | } 32 | return false; 33 | } 34 | 35 | private void addLanguage(String lang, String suffix) { 36 | urls.add(buildUri(lang + "." + suffix)); 37 | urls.add(buildUri(Util.normalizeLanguageCode(lang) + "." + suffix)); 38 | } 39 | 40 | private Uri buildUri(String suffix) { 41 | final String newPath = path + "." + suffix; 42 | return baseUri.buildUpon().path(newPath).build(); 43 | } 44 | 45 | public void start() { 46 | // Prevent IllegalArgumentException in okhttp3.Request.Builder 47 | if (HttpUrl.parse(baseUri.toString()) == null) { 48 | return; 49 | } 50 | 51 | for (String suffix : new String[] { "srt", "ssa", "ass" }) { 52 | urls.add(buildUri(suffix)); 53 | for (String language : Utils.getDeviceLanguages()) { 54 | addLanguage(language, suffix); 55 | } 56 | } 57 | urls.add(buildUri("vtt")); 58 | 59 | SubtitleFetcher subtitleFetcher = new SubtitleFetcher(activity, urls); 60 | subtitleFetcher.start(); 61 | } 62 | 63 | } 64 | -------------------------------------------------------------------------------- /app/src/main/java/com/brouken/player/dtpv/PlayerDoubleTapListener.java: -------------------------------------------------------------------------------- 1 | package com.brouken.player.dtpv; 2 | 3 | public interface PlayerDoubleTapListener { 4 | 5 | /** 6 | * Called when double tapping starts, after double tap gesture 7 | * 8 | * @param posX x tap position on the root view 9 | * @param posY y tap position on the root view 10 | */ 11 | default void onDoubleTapStarted(float posX, float posY) { } 12 | 13 | /** 14 | * Called for each ongoing tap (also single tap) (MotionEvent#ACTION_DOWN) 15 | * when double tap started and still in double tap mode defined 16 | * by {@link DoubleTapPlayerView#doubleTapDelay} 17 | * 18 | * @param posX x tap position on the root view 19 | * @param posY y tap position on the root view 20 | */ 21 | default void onDoubleTapProgressDown(float posX, float posY) { } 22 | 23 | /** 24 | * Called for each ongoing tap (also single tap) (MotionEvent#ACTION_UP} 25 | * when double tap started and still in double tap mode defined 26 | * by {@link DoubleTapPlayerView#doubleTapDelay} 27 | * 28 | * @param posX x tap position on the root view 29 | * @param posY y tap position on the root view 30 | */ 31 | default void onDoubleTapProgressUp(float posX, float posY) { } 32 | 33 | /** 34 | * Called when {@link DoubleTapPlayerView#doubleTapDelay} is over 35 | */ 36 | default void onDoubleTapFinished() { } 37 | } -------------------------------------------------------------------------------- /app/src/main/java/com/brouken/player/dtpv/SeekListener.java: -------------------------------------------------------------------------------- 1 | package com.brouken.player.dtpv; 2 | 3 | public interface SeekListener { 4 | /** 5 | * Called when video start reached during rewinding 6 | */ 7 | void onVideoStartReached(); 8 | 9 | /** 10 | * Called when video end reached during forwarding 11 | */ 12 | void onVideoEndReached(); 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-anydpi-v21/exo_ic_subtitle_off.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-anydpi-v21/exo_ic_subtitle_on.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/controls_gradient.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/exo_styled_controls_delete.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/exo_styled_controls_next.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/exo_styled_controls_pause.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/exo_styled_controls_play.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_aspect_ratio_24dp.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_auto_rotate_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_brightness_auto_24dp.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_brightness_medium_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_delete_24dp_.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_fit_screen_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_folder_open_24dp.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 12 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_lock_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_lock_open_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_pause_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_picture_in_picture_alt_24dp.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_play_arrow_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_screen_landscape_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_screen_lock_landscape_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_screen_lock_portrait_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_screen_lock_rotation_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_screen_portrait_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_screen_rotation_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_volume_off_24dp.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_volume_up_24dp.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rounded_controls_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shortcut_videos_foreground.xml: -------------------------------------------------------------------------------- 1 | 7 | 11 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_player.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_player_textureview.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/controls.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/layout/exo_player_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | 13 | 14 | 18 | 19 | 23 | 24 | 29 | 30 | 44 | 45 | 46 | 47 | 50 | 51 | 54 | 55 | 58 | 59 | 66 | 67 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /app/src/main/res/layout/exo_styled_settings_list.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/src/main/res/layout/settings_activity.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/layout/yt_overlay.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 15 | 16 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/layout/yt_seconds_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 16 | 17 | 23 | 24 | 30 | 31 | 37 | 38 | 39 | 40 | 47 | 48 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/shortcut_videos.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/app/src/main/res/mipmap-xhdpi/banner.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/values-az/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Təkrarlama keçidi 4 | Qırp 5 | Avtomatik fırlanmaq 6 | Cihaz istiqamətləndirməsi 7 | Oynatmaq üçün video seç 8 | Altyazıları yüklə 9 | Təfərrüatlar 10 | Fayllar tətbiqi deaktivdir və ya yoxdur 11 | Bu fayl silinsin\? 12 | Sil 13 | Tənzimləmələr 14 | Ümumi 15 | Avtomatik kadr sürəti uyğunluğu 16 | Video kadr sürətinə uyğunlaşdırmaq üçün ekran yenilənmə sürətini dəyişdir 17 | Ekran yenilənmə sürətini dəyişdirmə 18 | Tunelli oynatma 19 | Avtomatik şəkil içində şəkil 20 | Tətbiqdən çıxarkən PiP-ə keçid et 21 | Avtomatik olaraq PiP-ə keçid etmə 22 | Səssizliyi ötür 23 | Səs axınında səssizlik hissələrin ötür 24 | Məzmunu olduğu kimi oynat 25 | Uyğunlaşdır 26 | Video istiqamətləndirmə 27 | Video faylı açmaq üçün toxun.Xarici altyazıları yükləmək üçün uzun bas. 28 | Xarici altyazıları avtomatik yükləmək və ya kataloqda növbəti fayla keçidi aktivləşdirmək üçün videolarınızı ehtiva edən ən üst qovluğa (məsələn, Filmlər) %s giriş icazəsi verin. 29 | Tunelləmə 4K/HDR məzmunu üçün daha yaxşı dəstək verir, lakin bütün cihazlarda işləməyə bilər 30 | -------------------------------------------------------------------------------- /app/src/main/res/values-bn/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ফিট 4 | ক্রপ 5 | ভিডিও অরিয়েন্টেশন 6 | অটো-রোটেট 7 | ডিভাইস অরিয়েন্টেশন 8 | চালানোর জন্য একটি ভিডিও বাছুন 9 | মুছুন 10 | -------------------------------------------------------------------------------- /app/src/main/res/values-fa/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | اندازه مناسب 4 | -------------------------------------------------------------------------------- /app/src/main/res/values-hu/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | A fájlok alkalmazás le van tiltva vagy hiányzik 4 | Auto-forgatás 5 | Nyújtás 6 | Illesztés 7 | Részletek 8 | Feliratok betöltése 9 | Koppintson egyszer videófájl megnyitásához. Tartsa nyomva feliratok megnyitásához. 10 | Válasszon egy videót a lejátszáshoz 11 | Videó tájolása 12 | Videók 13 | -------------------------------------------------------------------------------- /app/src/main/res/values-ja/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 削除 4 | このファイルを削除しますか? 5 | 外部の字幕を自動的に読み込んだり、ディレクトリ内の次のファイルにスキップできるようにするには、動画が入っている一番上のフォルダ(例:Movies)へのアクセスを%sに許可してください。 6 | ファイルアプリが無効化された、または見つからない 7 | 詳細 8 | 字幕を読み込む 9 | タップして動画ファイルを開く。長押して外部の字幕を読み込む。 10 | 再生する動画を選択 11 | 自動回転 12 | 映像の向き 13 | 丁度収める 14 | 切り抜く 15 | 動画 16 | 設定 17 | ファイルアクセス 18 | ショートカット 19 | 開く 20 | ピクチャーインピクチャー 21 | 回転 22 | 自動 23 | 大きさ変更 24 | トンネリング再生 25 | 無音をとばす 26 | ディスプレイのリフレッシュレートを動画のフレームレートに切り替える 27 | 自動的にPiPに切り替えない 28 | ディスプレイのリフレッシュレートを変えない 29 | 自動でフレームレートを合わせる 30 | トンネリングは4KやHDRのコンテンツのために良いサポートを提供しますが、全ての端末では動作しないかもしれません 31 | オーディオストリームで無音の部分をとばす 32 | 自動ピクチャーインピクチャー 33 | アプリを離れるときにPiPに切り替える 34 | 端末のデコーダーを優先 (デフォルト) 35 | 端末のデコーダーのみ 36 | アプリのデコーダーを優先 37 | 繰り返しトグル 38 | 動画の無限ループを許可する追加の制御 (アプリの再起動が必要) 39 | 字幕の設定 40 | コンテンツをそのまま再生する 41 | 全般 42 | 優先するデコーダー 43 | 端末の向き 44 | Dolby Vision profile 7の縮退運用 45 | Dolby Vision profile 7のコンテンツをHDRディスプレイで再生する 46 | Dolby Visionを含むUHD Blu-rayコンテンツをそのまま再生する 47 | 危険 ⚠️ 48 | デフォルトの音声トラック 49 | メディアファイルのデフォルト 50 | このカテゴリのオプションを切り替えると、対応するコンテンツの再生が中断される場合があります 51 | 端末の言語 52 | -------------------------------------------------------------------------------- /app/src/main/res/values-ko/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 맞춤 4 | 삭제 5 | 설정 6 | 일반 기본 글꼴 사용 7 | -------------------------------------------------------------------------------- /app/src/main/res/values-ml/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ഇല്ലാതാക്കുക 4 | വെട്ടുക 5 | കളിക്കാനായി ഒരു വീഡിയോ തിരഞ്ഞെടുക്കുക 6 | തുറക്കുക 7 | വലുപ്പം മാറ്റുക 8 | തിരിക്കുക 9 | ചിത്രത്തിൽ ചിത്രം 10 | നിശബ്ദത ഒഴിവാക്കുക 11 | യാന്ത്രിക ചിത്രത്തിൽ ചിത്രം 12 | യാന്ത്രികം 13 | അപകടകരം ⚠️ 14 | ഉപകരണ ഭാഷകൾ 15 | സ്ഥിരസ്ഥിതി 16 | ഉപശീർഷകം 17 | വിശദമായ ശൈലി 18 | അടിക്കുറിപ്പ് മുൻഗണനകൾ 19 | കുറുക്കുവഴികൾ 20 | അനുയോജ്യം 21 | വിശദാംശങ്ങൾ 22 | ക്രമീകരണങ്ങൾ 23 | പൊതുവായ 24 | സ്വയം തിരിയുക 25 | ഉള്ളടക്കം അതേപടി കളിക്കുക 26 | വീഡിയോകൾ 27 | ഉൾച്ചേർത്ത ശൈലികൾ 28 | ഉൾച്ചേർത്ത ഉപശീർഷക ശൈലികൾ പ്രയോഗിക്കുക 29 | ഉൾച്ചേർത്ത ഉപശീർഷക ശൈലികൾ പ്രയോഗിക്കരുത് 30 | ഡിസ്പ്ലേ പുതുക്കൽ നിരക്ക് മാറ്റരുത് 31 | -------------------------------------------------------------------------------- /app/src/main/res/values-ms/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Pilih video untuk dimainkan 4 | Muat sari kata 5 | Penyerasian kadar bidang automatik 6 | Jangan ubah kadar segar semula paparan 7 | Ubah kadar segar semula paparan supaya sama dengan kadar bidang video 8 | Mod tetingkap automatik 9 | Main balik terowong 10 | Terowong memberikan sokongan yang lebih baik untuk kandungan 4K / HDR, tetapi mungkin tidak berfungsi pada semua peranti 11 | Ulang togol 12 | Mod tetingkap 13 | Automatik 14 | Pintasan 15 | Keutamaan kapsyen 16 | Keutamaan penyahkod 17 | Utamakan penyahkod aplikasi 18 | Penyahkod peranti sahaja 19 | Putaran peranti 20 | Perincian 21 | Jangan ubah ke mod tetingkap secara automatik 22 | Langkau kesunyian 23 | Padan 24 | Putaran auto 25 | Umum 26 | Pangkas 27 | Orientasi video 28 | Sentuh untuk membuka fail video. Sentuh lama untuk memuatkan sari kata luaran. 29 | Fail apl dinyahdayakan ataupun hilang 30 | Padam fail ini\? 31 | Ubah ke mod tetingkap ketika keluar apl 32 | Mainkan kandungan seperti adanya 33 | Tiada video yang terindeks. Untuk mengakses fail video pada storan yang ada, hidupkan pengimbasan media automatik pada tetapan sistem. 34 | Padam 35 | Untuk memuatkan sari kata luaran atau menghidupkkan pelangkauan ke fail seterusnya di dalam direktori, benarkan %s akses ke folder paling atas yang mempunyai video anda (cth. Wagam). 36 | Tetapan 37 | Langkau bahagian yang sunyi pada aliran audio 38 | Putar 39 | Akses fail 40 | Kawalan tambahan untuk menghidupkan ulangan video tanpa had (apl perlu dimulakan semula) 41 | Video 42 | Buka 43 | Saiz semula 44 | Utamakan penyahkod peranti 45 | -------------------------------------------------------------------------------- /app/src/main/res/values-nb-rNO/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Filutforsker avskrudd eller manglende 4 | Detaljer 5 | Last inn undertekster 6 | Trykk for å åpne videofil. Trykk lenge for å laste eksterne undertekster. 7 | Velg en video å spille 8 | Roter automatisk 9 | Skjermretning 10 | Beskjør 11 | Tilpass 12 | Tunnel gir bedre støtte for 4K/HDR innhold, men kan ikke fungere på alle enheter 13 | Tunnel-avspilling 14 | Ikke bytt til BiB automatisk 15 | Bytte til PiP når du forlater app 16 | Automatisk bilde-i-bilde 17 | Automatisk rammetakt-jamføring 18 | Bytt skjermoppfriskningstakt for å samsvare med videorammetakt 19 | Innvilg %s tilgang til grunnmappen (f.eks «Filmer») som inneholder videoene dine for å laste eksterne undertekster eller hoppe til neste fil i mappen automatisk. 20 | Ikke endre skjermoppfriskningstakt 21 | Hopp over stillhet 22 | Spill innholdet som det er 23 | Generelt 24 | Innstillinger 25 | Slett 26 | Slett denne filen\? 27 | Hoppe over deler med stillhet på audio stream 28 | Videoer 29 | Filtilgang 30 | Auto 31 | Åpne 32 | Endre størrelse 33 | Roter 34 | Bilde-i-bilde 35 | Gjenta veksling 36 | Ekstra kontroller for å tillate uendelig videogjentagelse (krever omstart av programmet) 37 | Snarveier 38 | Fant ingen indekserte videofiler. For tilgang til videofiler på et gitt lagringsmedie kan du skru på automatisk mediaskanning i systeminnstillingene. 39 | Undertekst-innstillinger 40 | Foretrekk programdekoding 41 | Kun enhetsdekoding 42 | Dekoder-prioritet 43 | Foretrekk enhetsdekoding 44 | -------------------------------------------------------------------------------- /app/src/main/res/values-notouch/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/values-sr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Obrisi 4 | Da li zelite da obrisete ovaj fajl\? 5 | Da automatski ucitate spolje titlove ili omogucite preskakanje do sledeceg fajla u kategoriji, dozvolite %s pristum glavnom folderu koji sadrzi videe (npr. Filmovi). 6 | Aplikacija Datoteke je onemogucena ili nedostaje 7 | Detalji 8 | Ucitaj titlove 9 | Dodirni da otvoris video fajl. Zadrzi dugo da ucitas spoljne titlove. 10 | Izaberi video za pokretanje 11 | Automatska rotacija 12 | Video orijentacija 13 | Iseci 14 | Uklopi 15 | Видео снимци 16 | -------------------------------------------------------------------------------- /app/src/main/res/values-television/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/values-th/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ปรับทิศตามวีดีโอ 4 | แอพไฟล์ถูกปิดใช้งานหรือหายไป 5 | รายละเอียด 6 | โหลดคำบรรยาย 7 | แตะเพื่อเปิดไฟล์วิดีโอ แตะค้างเพื่อโหลดคำบรรยายภายนอก 8 | เลือกวิดีโอที่จะเล่น 9 | หมุนอัตโนมัติ 10 | พอดีกับหน้าจอ 11 | พอดีที่สุด 12 | ลบ 13 | ลบไฟล์นี้ \? 14 | ในการโหลดคำบรรยายภายนอกโดยอัตโนมัติ หรือ เปิดใช้งานการข้ามไปยังไฟล์ถัดไปในไดเร็กทอรี ให้ %s เข้าถึงโฟลเดอร์นอกสุดที่มีวิดีโอของคุณ (เช่น ภาพยนตร์) 15 | วิดีโอ 16 | ทั่วไป 17 | การตั้งค่า 18 | เปิด 19 | ปรับขนาด 20 | การเข้าถึงไฟล์ 21 | อัตโนมัติ 22 | อันตราย ⚠️ 23 | ค่ากำหนดคำบรรยาย 24 | ภาษาของอุปกรณ์ 25 | สลับเป็นโหมดภาพซ้อนภาพในภาพเมื่อออกจากแอป 26 | ปรับทิศตามอุปกรณ์ 27 | -------------------------------------------------------------------------------- /app/src/main/res/values-tr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Video yönü 4 | Dosyalar uygulaması devre dışı veya yok 5 | Ayrıntılar 6 | Alt yazıları yükle 7 | Bir video dosyası açmak için dokunun. Harici alt yazıları yüklemek için uzun dokunun. 8 | Oynatmak için bir video seçin 9 | Otomatik döndür 10 | Kırp 11 | Sığdır 12 | Sil 13 | Bu dosya silinsin mi\? 14 | Harici alt yazıları otomatik olarak yüklemek veya bir dizindeki sonraki dosyaya atlamayı etkinleştirmek için videolarınızı içeren en üstteki klasöre (örn. Filmler) %s erişim izni verin. 15 | İçeriği olduğu gibi oynat 16 | Ses akışında sessiz olan bölümleri atla 17 | Sessizliği atla 18 | Otomatik olarak resim içinde resime geçme 19 | Uygulamadan çıkarken resim içinde resime geç 20 | Otomatik resim içinde resim 21 | Tünelleme, 4K/HDR içeriği için daha iyi destek sağlar ancak tüm aygıtlarda çalışmayabilir 22 | Tünellenen oynatma 23 | Ekran yenileme hızını değiştirme 24 | Ekran yenileme hızını video kare hızına uyacak şekilde değiştir 25 | Otomatik kare hızı eşleştirme 26 | Genel 27 | Ayarlar 28 | Videonun süresiz döngüye alınmasına izin vermek için ek denetim (uygulamanın yeniden başlatılmasını gerektirir) 29 | Tekrarlama anahtarı 30 | Videolar 31 | Resim içinde resim 32 | Döndür 33 | 34 | Yeniden boyutlandır 35 | Dosya erişimi 36 | Otomatik 37 | Dizine alınmış video dosyası bulunamadı. Belirli depolama alanındaki video dosyalarına erişmek için sistem ayarlarında otomatik ortam taramasını etkinleştirin. 38 | Alt yazı tercihleri 39 | Kısayollar 40 | Aygıt kod çözücülerini tercih et 41 | Kod çözücü önceliği 42 | Uygulama kod çözücülerini tercih et 43 | Yalnızca aygıt kod çözücüleri 44 | Aygıt yönü 45 | -------------------------------------------------------------------------------- /app/src/main/res/values-zh-rCN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 文件应用处于禁用或缺失状态 4 | 详情 5 | 加载字幕 6 | 轻按打开一个视频文件。长按加载外部视频。 7 | 选择要播放的文件 8 | 自动旋转 9 | 视频方向 10 | 裁剪 11 | 适应 12 | 删除 13 | 删除这个文件? 14 | 要自动加载外部字幕或启用跳到目录中的下一个文件,请允许%s访问包含您的视频(例如电影)的最顶层文件夹的。 15 | 隧道模式为 4K/HDR 内容提供了更好的支持,但可能无法在所有设备上工作 16 | 按原样播放 17 | 跳过音频缺失部分 18 | 跳过无声片段 19 | 不要自动切换到画中画 20 | 离开本应用时切换至画中画 21 | 自动画中画 22 | 隧道播放 23 | 不要更改显示刷新率 24 | 切换显示刷新率以匹配视频帧率 25 | 自动帧率匹配 26 | 一般 27 | 设置 28 | 重复切换 29 | 允许无限循环视频的额外控制(需要重新启动应用程序) 30 | 视频 31 | 打开 32 | 调整大小 33 | 旋转 34 | 画中画 35 | 自动 36 | 文件访问 37 | 没有找到视频文件 38 | 字幕选项 39 | 快捷方式 40 | 偏好设备解码器(默认) 41 | 解码器优先级 42 | 偏好应用解码器 43 | 仅使用设备解码器 44 | 设备方向 45 | 按原样播放包含杜比视界的超高清蓝光内容 46 | 危险 ⚠️ 47 | 切换此类别中的选项可能会破坏正常兼容内容的播放 48 | 默认音轨 49 | 设备语言 50 | 默认 51 | 杜比视界配置文件 7 后备 52 | 在 HDR 显示器上播放杜比视界配置 7 内容 53 | 字幕嵌入样式 54 | 应用嵌入字幕样式 55 | 不应用嵌入字幕样式 56 | 使用默认的常规字体 57 | 字幕 58 | 粗体式样 59 | 使用粗体字体 60 | 61 | -------------------------------------------------------------------------------- /app/src/main/res/values/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | @string/pref_file_access_auto 5 | Storage Access Framework 6 | MediaStore 7 | Legacy 8 | 9 | 10 | 11 | auto 12 | saf 13 | mediastore 14 | legacy 15 | 16 | 17 | 18 | @string/pref_decoder_priority_prefer_device 19 | @string/pref_decoder_priority_prefer_app 20 | @string/pref_decoder_priority_only_device 21 | 22 | 23 | 24 | 1 25 | 2 26 | 0 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FF000000 4 | #FFFFFFFF 5 | #3DDC84 6 | #F5F5F5 7 | 8 | #98000000 9 | @color/ui_controls_background 10 | @color/ui_controls_background 11 | @color/ui_controls_background 12 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 84dp 4 | 20sp 5 | 6sp 6 | 90dp 7 | 170sp 8 | 9 | 12dp 10 | 18dp 11 | 51dp 12 | 13 | 3dp 14 | -------------------------------------------------------------------------------- /app/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | 13 | 14 | 19 | 20 | 28 | 29 | 34 | -------------------------------------------------------------------------------- /app/src/main/res/xml/locales_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/xml/shortcuts.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 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() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:8.10.0' 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | google() 18 | mavenCentral() 19 | maven { 20 | url "https://jitpack.io" 21 | } 22 | } 23 | } 24 | 25 | task clean(type: Delete) { 26 | delete rootProject.buildDir 27 | } -------------------------------------------------------------------------------- /doubletapplayerview/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /doubletapplayerview/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | namespace 'com.github.vkay94.dtpv' 5 | compileSdk 34 6 | 7 | defaultConfig { 8 | minSdkVersion 16 9 | targetSdkVersion 34 10 | 11 | vectorDrawables.useSupportLibrary = true 12 | 13 | consumerProguardFiles 'consumer-rules.pro' 14 | } 15 | 16 | buildTypes { 17 | release { 18 | minifyEnabled false 19 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 20 | } 21 | } 22 | 23 | compileOptions { 24 | sourceCompatibility JavaVersion.VERSION_1_8 25 | targetCompatibility JavaVersion.VERSION_1_8 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /doubletapplayerview/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/doubletapplayerview/consumer-rules.pro -------------------------------------------------------------------------------- /doubletapplayerview/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 22 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/drawable/ic_play_triangle.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-af/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d sekondes 4 | %d sekonde 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-am/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d ሰከንዶች 4 | %d ሰከንድ 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-ar/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d ثانية 4 | %d ثانية 5 | ثانية واحدة (%d) 6 | ثانيتان (%d) 7 | %d ثوانٍ 8 | %d ثانية 9 | 10 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-az/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d saniyə 4 | %d saniyə 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-b+sr+Latn/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d sekundi 4 | %d sekunda 5 | %d sekunde 6 | 7 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-be/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d секунды 4 | %d секунда 5 | %d секунды 6 | %d секунд 7 | 8 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-bg/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d секунди 4 | %d секунда 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-bn/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d সেকেন্ড 4 | %d সেকেন্ড 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-bs/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d s 4 | %d s 5 | %d s 6 | 7 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-ca/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d segons 4 | %d segon 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-cs/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d sekund 4 | %d sekunda 5 | %d sekundy 6 | %d sekundy 7 | 8 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-da/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d sekunder 4 | %d sekund 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-de/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d Sekunden 4 | %d Sekunde 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-el/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d δευτερόλεπτα 4 | %d δευτερόλεπτο 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-en-rGB/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d seconds 4 | %d second 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-en-rIN/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d seconds 4 | %d second 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-es-rUS/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d segundos 4 | %d segundo 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-es/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d segundos 4 | %d segundo 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-et/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d sekundit 4 | %d sekund 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-eu/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d segundo 4 | %d segundo 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-fa/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d ثانیه 4 | %d ثانیه 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-fi/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d sekuntia 4 | %d sekunti 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-fr-rCA/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d secondes 4 | %d seconde 5 | %d secondes 6 | 7 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-fr/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d secondes 4 | %d seconde 5 | %d secondes 6 | 7 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-gl/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d segundos 4 | %d segundo 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-gu/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d સેકન્ડ 4 | %d સેકન્ડ 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-hi/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d सेकंड 4 | %d सेकंड 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-hr/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d sekundi 4 | %d sekunda 5 | %d sekunde 6 | 7 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-hu/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d másodperc 4 | %d másodperc 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-hy/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d վայրկյան 4 | %d վայրկյան 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-in/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d detik 4 | %d detik 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-is/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d sekúndur 4 | %d sekúnda 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-it/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d secondi 4 | %d secondo 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-iw/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d שניות 4 | שנייה אחת (%d) 5 | %d שניות 6 | %d שניות 7 | 8 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-ja/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d秒 4 | %d秒 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-ka/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d წამი 4 | %d წამი 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-kk/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d секунд 4 | %d секунд 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-km/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d វិនាទី 4 | %d វិនាទី 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-kn/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d ಸೆಕೆಂಡ್‌ಗಳು 4 | %d ಸೆಕೆಂಡ್‌ಗಳು 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-ko/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d초 4 | %d초 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-ky/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d секунд 4 | %d секунд 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-lo/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d ວິນາທີ 4 | %d ວິນາທີ 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-lt/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d sekundžių 4 | %d sekundė 5 | %d sekundės 6 | %d sekundės 7 | 8 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-lv/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d sekundes 4 | %d sekundes 5 | %d sekunde 6 | 7 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-mk/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d секунди 4 | %d секунда 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-ml/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d സെക്കൻഡ് 4 | %d സെക്കൻഡ് 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-mn/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d секунд 4 | %d секунд 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-mr/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d सेकंद 4 | %d सेकंद 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-ms/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d saat 4 | %d saat 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-my/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d စက္ကန့် 4 | %d စက္ကန့် 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-nb/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d sekunder 4 | %d sekund 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-ne/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d सेकेन्ड 4 | %d सेकेन्ड 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-nl/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d seconden 4 | %d seconde 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-pa/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d ਸਕਿੰਟ 4 | %d ਸਕਿੰਟ 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-pl/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d sekundy 4 | %d sekunda 5 | %d sekundy 6 | %d sekund 7 | 8 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-pt-rBR/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d segundos 4 | %d segundo 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-pt-rPT/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d segundos 4 | %d segundo 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-ro/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d de secunde 4 | %d secundă 5 | %d secunde 6 | 7 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-ru/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d секунды 4 | %d секунда 5 | %d секунды 6 | %d секунд 7 | 8 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-si/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | තත්පර %dක් 4 | තත්පර %dක් 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-sk/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d sekúnd 4 | %d sekunda 5 | %d sekundy 6 | %d sekundy 7 | 8 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-sl/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d sekund 4 | %d sekunda 5 | %d sekundi 6 | %d sekunde 7 | 8 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-sq/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d sekonda 4 | %d sekondë 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-sr/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d секунди 4 | %d секунда 5 | %d секунде 6 | 7 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-sv/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d sekunder 4 | %d sekund 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-sw/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Sekunde %d 4 | Sekunde %d 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-ta/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d விநாடிகள் 4 | %d விநாடி 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-te/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d సెకన్లు 4 | %d సెకను 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-th/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d วินาที 4 | %d วินาที 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-tl/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d na segundo 4 | %d segundo 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-tr/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d saniye 4 | %d saniye 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-uk/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d секунди 4 | %d секунда 5 | %d секунди 6 | %d секунд 7 | 8 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-ur/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d سیکنڈز 4 | %d سیکنڈ 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-uz/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d soniya 4 | %d soniya 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-vi/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d giây 4 | %d giây 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-zh-rCN/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d 秒 4 | %d 秒 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-zh-rHK/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d 秒 4 | %d 秒 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-zh-rTW/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d 秒 4 | %d 秒 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values-zu/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d amasekhondi 4 | %d amasekhondi 5 | 6 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values/dtpv.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values/plurals.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | %d seconds 4 | %d second 5 | %d seconds 6 | 7 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values/public.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /doubletapplayerview/src/main/res/values/yt_overlay.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | #18FFFFFF 18 | #20EEEEEE 19 | 40dp 20 | 21 | 25 | 26 | -------------------------------------------------------------------------------- /fastlane/metadata/android/cs/changelogs/88.txt: -------------------------------------------------------------------------------- 1 | • Android TV: Tmavé téma při výběru souboru, přidání zoom módu (dlouze potržte tlačítko změny ořezu obrazovky, použijte tlačítka Nahoru/Dolů pro změnu) 2 | • Řada vylepšení a oprav zobrazení titulků (styly z předvoleb titulků, odsazení při použití pozadí atd.) 3 | • Vylepšení voleb rychlosti přehrávání (ukládání a obnovení, přidání 1,75×) 4 | • Ovládání hlasitosti kolečkem myši a joystickem gamepadu 5 | • Zobrazování kapitol na časovém pruhu 6 | • Další opravy a vylepšení 7 | -------------------------------------------------------------------------------- /fastlane/metadata/android/cs/full_description.txt: -------------------------------------------------------------------------------- 1 | Video přehrávač pro Android založený na knihovně ExoPlayer. Využívá rozšíření ExoPlayer ffmpeg s povolenými všemi audio formáty (zvládne tak i speciální formáty jako AC3, EAC3, DTS, DTS HD, TrueHD atd.). 2 | 3 | Řádně synchronizuje stopu zvuku s videem při přehrávání přes Bluetooth sluchátka/reproduktor. 4 | 5 | Podporované formáty 6 | 7 | * Zvuk: Vorbis, Opus, FLAC, ALAC, PCM/WAVE (μ-law, A-law), MP1, MP2, MP3, AMR (NB, WB), AAC (LC, ELD, HE; xHE na Androidu 9+), AC-3, E-AC-3, DTS, DTS-HD, TrueHD 8 | * Video: H.263, H.264 AVC (Baseline Profile; Main Profile na Androidu 6+), H.265 HEVC, MPEG-4 SP, VP8, VP9, AV1 9 | * Kontejnery (soubory): MP4, MOV, WebM, MKV, Ogg, MPEG-TS, MPEG-PS, FLV 10 | * Streamování: DASH, HLS, SmoothStreaming, RTSP 11 | * Titulky: SRT, SSA, ASS, TTML, VTT 12 | 13 | Přehrávání HDR (HDR10+ a Dolby Vision) na kompatibilních/podporovaných zařízení. 14 | 15 | Funkce 16 | 17 | * Volba stopy zvuku/titulků 18 | * Nastavení rychlosti přehrávání 19 | * Horizontální swipe a dvojité poklepání pro rychlý posun v čase 20 | * Vertikální swipe pro změnu jasu (vlevo) / hlasitosti (vpravo) 21 | * Zoom/přiblížení dvěma prsty (Android 7 a výš) 22 | * Obraz v obraze (plovoucí okno) na Androidu 8 a výš (zvětšovatelné na Androidu 11 a výš) 23 | * Změna velikosti (přizpůsobení/oříznutí) 24 | * Zvýšení hlasitosti 25 | * Automatické přizpůsobení obnovovací frekvence na Android TV/boxech (Android 6+) 26 | * Akce po skončení přehrávání (smazání souboru/skok na následující) 27 | * Zamykání ovládání (dlouhé podržení) 28 | * Bez reklam, sledování nebo zbytečných povoleních 29 | 30 | Pro načteních externích titulků dlouze podržte tlačítko pro otevření souboru ve spodním panelu. Poprvé, co toto uděláte, vám bude nabídnuto vybrání kořenového video adresáře pro automatické načítání externích titulků. 31 | -------------------------------------------------------------------------------- /fastlane/metadata/android/cs/full_description_google_extra.txt: -------------------------------------------------------------------------------- 1 | Open source / zdrojový kód dostupný: https://github.com/moneytoo/Player -------------------------------------------------------------------------------- /fastlane/metadata/android/cs/short_description.txt: -------------------------------------------------------------------------------- 1 | Jednoduchý video přehrávač založený na knihovně ExoPlayer -------------------------------------------------------------------------------- /fastlane/metadata/android/cs/short_description_google.txt: -------------------------------------------------------------------------------- 1 | Open source přehrávač videa, bez zpoždění Bluetooth a podpory různých kodeků -------------------------------------------------------------------------------- /fastlane/metadata/android/de-DE/full_description.txt: -------------------------------------------------------------------------------- 1 | Android-Videoplayer basierend auf der ExoPlayer-Bibliothek. Er verwendet die FFmpeg-Erweiterung von ExoPlayer mit all seinen aktivierten Audioformaten (er kann sogar spezielle Formate wie AC3, EAC3, DTS, DTS HD, TrueHD usw. verarbeiten). 2 | 3 | Bei Verwendung von Bluetooth-Kopfhörern/Lautsprechern wird der Ton korrekt mit der Videospur synchronisiert. 4 | 5 | Unterstützte Formate 6 | 7 | * Audio: Vorbis, Opus, FLAC, ALAC, PCM/WAVE (μ-law, A-law), MP1, MP2, MP3, AMR (NB, WB), AAC (LC, ELD, HE; xHE auf Android 9+), AC-3, E-AC-3, DTS, DTS-HD, TrueHD 8 | * Video: H.263, H.264 AVC (Baseline Profile; Main Profile auf Android 6+), H.265 HEVC, MPEG-4 SP, VP8, VP9, AV1 9 | * Container: MP4, MOV, WebM, MKV, Ogg, MPEG-TS, MPEG-PS, FLV 10 | * Streaming: DASH, HLS, SmoothStreaming, RTSP 11 | * Untertitel: SRT, SSA, ASS, TTML, VTT 12 | 13 | HDR (HDR10+ und Dolby Vision) Videowiedergabe auf kompatibler/unterstützter Hardware. 14 | 15 | Funktionen 16 | 17 | * Auswahl von Audio-/Untertitelspuren 18 | * Steuerung der Abspielgeschwindigkeit 19 | * Horizontales Wischen und Doppeltippen zum schnellen Suchen 20 | * Vertikales Wischen zum Ändern der Helligkeit (links) / Lautstärke (rechts) 21 | * Aufziehen zum Zoomen (Android 7+) 22 | * PiP (Bild im Bild) auf Android 8+ (Größenänderung auf Android 11+) 23 | * Größe ändern (einpassen/ausschneiden) 24 | * Lautstärke erhöhen 25 | * Automatische Bildratenanpassung auf Android TV/Boxen (Android 6+) 26 | * Post-Playback-Aktionen (Datei löschen/zum nächsten springen) 27 | * Berührungssperre (langes Tippen) 28 | * Keine Werbung, Tracking oder übermäßige Berechtigungen 29 | 30 | Um externe (nicht eingebettete) Untertitel zu laden, drücken Sie lange auf die Dateiöffnungsaktion in der unteren Leiste. Bei erster Verwendung wird Ihnen angeboten, das Video- Wurzelverzeichnis auszuwählen, um das automatische Laden externer Untertitel zu aktivieren. 31 | -------------------------------------------------------------------------------- /fastlane/metadata/android/de-DE/full_description_google_extra.txt: -------------------------------------------------------------------------------- 1 | Quelloffen / Quellcode verfügbar: https://github.com/moneytoo/Player 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/de-DE/short_description.txt: -------------------------------------------------------------------------------- 1 | Einfacher Videoplayer basierend auf ExoPlayer-Programmbibliothek 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/de-DE/short_description_google.txt: -------------------------------------------------------------------------------- 1 | Quelloffener Videoplayer ohne Bluetooth-Verzögerung (mit verschiedene Codecs) 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/el/full_description.txt: -------------------------------------------------------------------------------- 1 | Πρόγραμμα αναπαραγωγής βίντεο για Android που βασίζεται στη βιβλιοθήκη ExoPlayer. Χρησιμοποιεί την επέκταση FFmpeg του ExoPlayer με ενεργοποιημένες όλες τις μορφές ήχου (μπορεί να χειριστεί ακόμη και ειδικές μορφές όπως AC3, EAC3, DTS, DTS HD, TrueHD κ.λπ.). 2 | 3 | Συγχρονίζει σωστά τον ήχο με το βίντεο όταν χρησιμοποιείτε ακουστικά/ηχείο Bluetooth. 4 | 5 | Υποστηριζόμενες μορφές 6 | 7 | * Ήχος: Vorbis, Opus, FLAC, ALAC, PCM/WAVE (μ-law, A-law), MP1, MP2, MP3, AMR (NB, WB), AAC (LC, ELD, HE; xHE σε Android 9+), AC-3, E-AC-3, DTS, DTS-HD, TrueHD. 8 | * Βίντεο: H.263, H.264 AVC (Baseline Profile; Main Profile σε Android 6+), H.265 HEVC, MPEG-4 SP, VP8, VP9, AV1 9 | * Container: MP4, MOV, WebM, MKV, Ogg, MPEG-TS, MPEG-PS, FLV 10 | * Ροή: DASH, HLS, SmoothStreaming, RTSP 11 | * Υπότιτλοι: SRT, SSA, ASS, TTML, VTT 12 | 13 | Αναπαραγωγή βίντεο HDR (HDR10+ και Dolby Vision) σε συμβατό/υποστηριζόμενο υλικό. 14 | 15 | Χαρακτηριστικά 16 | 17 | * Επιλογή κομματιού ήχου/υποτίτλων 18 | * Έλεγχος ταχύτητας αναπαραγωγής 19 | * Οριζόντια σάρωση και διπλό πάτημα για γρήγορη αναζήτηση 20 | * Κάθετη σάρωση για αλλαγή φωτεινότητας (αριστερά) / έντασης (δεξιά) 21 | * Τσίμπημα για ζουμ (Android 7+) 22 | * PiP (Εικόνα σε Εικόνα) σε Android 8+ (με δυνατότητα αλλαγής μεγέθους σε Android 11+) 23 | * Αλλαγή μεγέθους (προσαρμογή / περικοπή) 24 | * Ενίσχυση έντασης ήχου 25 | * Αυτόματη αντιστοίχιση ρυθμού καρέ σε Android TV / συσκευές (Android 6+) 26 | * Ενέργειες μετά την αναπαραγωγή (διαγραφή αρχείου / μετάβαση στο επόμενο) 27 | * Κλείδωμα αφής (παρατεταμένο πάτημα) 28 | * Χωρίς διαφημίσεις, παρακολούθηση ή υπερβολικά δικαιώματα. 29 | 30 | Για να φορτώσετε εξωτερικούς (μη ενσωματωμένους) υπότιτλους, πατήστε παρατεταμένα την επιλογή ανοίγματος αρχείου στην κάτω μπάρα. Την πρώτη φορά που θα το κάνετε αυτό, θα σας προσφερθεί να επιλέξετε ριζικό φάκελο βίντεο για αυτόματη φόρτωση εξωτερικών υπότιτλων. 31 | -------------------------------------------------------------------------------- /fastlane/metadata/android/el/full_description_google_extra.txt: -------------------------------------------------------------------------------- 1 | Ανοιχτός κώδικας / διαθέσιμος πηγαίος κώδικας: https://github.com/moneytoo/Player 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/el/short_description.txt: -------------------------------------------------------------------------------- 1 | Απλό πρόγραμμα αναπαραγωγής βίντεο βασισμένο στη βιβλιοθήκη ExoPlayer 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/el/short_description_google.txt: -------------------------------------------------------------------------------- 1 | Πρόγραμμα αναπαραγωγής βίντεο ανοιχτού κώδικα χωρίς καθυστέρηση ήχου 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/45.txt: -------------------------------------------------------------------------------- 1 | • Add post-playback actions (delete file/skip to next) 2 | • Add touch lock (long tap) 3 | • Add internet permission (streaming, access remote media using file managers) 4 | • Android TV improvements (navigation/controls, frame rate matching) 5 | • Update ExoPlayer to 2.14.2 6 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/88.txt: -------------------------------------------------------------------------------- 1 | • Android TV: Dark theme for file chooser, add zoom mode (long tap the Resize button to activate, UP/DOWN to configure) 2 | • Various subtitle improvements and fixes (caption preference styling, background padding etc.) 3 | • Improve playback speed options (save and restore, add 1.75×) 4 | • Volume control using mouse wheel and gamepad joystick 5 | • Show chapters on time bar 6 | • Other improvements and fixes 7 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/full_description.txt: -------------------------------------------------------------------------------- 1 | Android video player based on the ExoPlayer library. It uses ExoPlayer's FFmpeg extension with all its audio formats enabled (it can handle even special formats like AC3, EAC3, DTS, DTS HD, TrueHD etc.). 2 | 3 | It properly syncs audio with the video track when using Bluetooth earphones/speaker. 4 | 5 | Supported formats 6 | 7 | * Audio: Vorbis, Opus, FLAC, ALAC, PCM/WAVE (μ-law, A-law), MP1, MP2, MP3, AMR (NB, WB), AAC (LC, ELD, HE; xHE on Android 9+), AC-3, E-AC-3, DTS, DTS-HD, TrueHD 8 | * Video: H.263, H.264 AVC (Baseline Profile; Main Profile on Android 6+), H.265 HEVC, MPEG-4 SP, VP8, VP9, AV1 9 | * Containers: MP4, MOV, WebM, MKV, Ogg, MPEG-TS, MPEG-PS, FLV 10 | * Streaming: DASH, HLS, SmoothStreaming, RTSP 11 | * Subtitles: SRT, SSA, ASS, TTML, VTT 12 | 13 | HDR (HDR10+ and Dolby Vision) video playback on compatible/supported hardware. 14 | 15 | Features 16 | 17 | * Audio/subtitle track selection 18 | * Playback speed control 19 | * Horizontal swipe and double tap to quickly seek 20 | * Vertical swipe to change brightness (left) / volume (right) 21 | * Pinch to zoom (Android 7+) 22 | * PiP (Picture in Picture) on Android 8+ (resizable on Android 11+) 23 | * Resize (fit/crop) 24 | * Volume boost 25 | * Auto frame rate matching on Android TV/boxes (Android 6+) 26 | * Post-playback actions (delete file/skip to next) 27 | * Touch lock (long tap) 28 | * No ads, tracking or excessive permissions 29 | 30 | To load external (non-embedded) subtitles, long press the file open action in the bottom bar. The first time you do that, you will be offered to select root video folder to enable automatic loading of external subtitles. 31 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/full_description_google_extra.txt: -------------------------------------------------------------------------------- 1 | Open source / source code available: https://github.com/moneytoo/Player -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/featureGraphic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/fastlane/metadata/android/en-US/images/featureGraphic.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/fastlane/metadata/android/en-US/images/icon.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/fastlane/metadata/android/en-US/images/phoneScreenshots/4.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/readmeScreenshots/caption_preferences_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/fastlane/metadata/android/en-US/images/readmeScreenshots/caption_preferences_1.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/readmeScreenshots/caption_preferences_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/fastlane/metadata/android/en-US/images/readmeScreenshots/caption_preferences_2.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/readmeScreenshots/files_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/fastlane/metadata/android/en-US/images/readmeScreenshots/files_1.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/readmeScreenshots/files_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/fastlane/metadata/android/en-US/images/readmeScreenshots/files_2.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/tvBanner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/fastlane/metadata/android/en-US/images/tvBanner.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/tvScreenshots/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/fastlane/metadata/android/en-US/images/tvScreenshots/1.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/tvScreenshots/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/fastlane/metadata/android/en-US/images/tvScreenshots/2.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/tvScreenshots/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/fastlane/metadata/android/en-US/images/tvScreenshots/3.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/short_description.txt: -------------------------------------------------------------------------------- 1 | Simple video player based on ExoPlayer library -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/short_description_google.txt: -------------------------------------------------------------------------------- 1 | Open source video player with no Bluetooth lag and support for various codecs -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/title.txt: -------------------------------------------------------------------------------- 1 | Just (Video) Player -------------------------------------------------------------------------------- /fastlane/metadata/android/fr/full_description.txt: -------------------------------------------------------------------------------- 1 | Lecteur vidéo Android basé sur la bibliothèque ExoPlayer. Il utilise l'extension FFmpeg d'ExoPlayer avec tous ses formats audio activés (il peut même gérer des formats spéciaux comme AC3, EAC3, DTS, DTS HD, TrueHD, etc.) 2 | 3 | Il synchronise correctement l'audio avec la piste vidéo lorsqu'il utilise des écouteurs/haut-parleurs Bluetooth. 4 | 5 | Formats pris en charge 6 | 7 | * Audio : Vorbis, Opus, FLAC, ALAC, PCM/WAVE (μ-law, A-law), MP1, MP2, MP3, AMR (NB, WB), AAC (LC, ELD, HE ; xHE sur Android 9+), AC-3, E-AC-3, DTS, DTS-HD, TrueHD. 8 | * Vidéo : H.263, H.264 AVC (Profil de base ; Profil principal sur Android 6+), H.265 HEVC, MPEG-4 SP, VP8, VP9, AV1 9 | * Containers : MP4, MOV, WebM, MKV, Ogg, MPEG-TS, MPEG-PS, FLV 10 | * Streaming : DASH, HLS, SmoothStreaming, RTSP 11 | * Sous-titres : SRT, SSA, ASS, TTML, VTT 12 | 13 | Lecture de vidéos HDR (HDR10+ et Dolby Vision) sur du matériel compatible/pris en charge. 14 | 15 | Caractéristiques 16 | 17 | * Sélection des pistes audio/sous-titres 18 | * Contrôle de la vitesse de lecture 19 | * Glissement horizontal et double tapotement pour une recherche rapide. 20 | * Glissement vertical pour modifier la luminosité (gauche) / le volume (droite) 21 | * Pincement pour zoomer (Android 7+) 22 | * PiP (Picture in Picture) sur Android 8+ (redimensionnable sur Android 11+) 23 | * Redimensionnement (ajustement/coupe) 24 | * Augmentation du volume 25 | * Adaptation automatique de la fréquence d'images sur les téléviseurs/boîtes Android (Android 6+) 26 | * Actions post-lecture (supprimer le fichier/ passer au suivant) 27 | * Verrouillage tactile (appui long) 28 | * Pas de publicité, de suivi ou de permissions excessives 29 | 30 | Pour charger des sous-titres externes (non intégrés), appuyez longuement sur l'action d'ouverture de fichier dans la barre inférieure. La première fois que vous le ferez, il vous sera proposé de sélectionner le dossier vidéo racine pour activer le chargement automatique des sous-titres externes. 31 | -------------------------------------------------------------------------------- /fastlane/metadata/android/fr/full_description_google_extra.txt: -------------------------------------------------------------------------------- 1 | Code source ouvert et disponible : https://github.com/moneytoo/Player 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/fr/short_description.txt: -------------------------------------------------------------------------------- 1 | Lecteur vidéo simple basé sur la bibliothèque ExoPlayer 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/fr/short_description_google.txt: -------------------------------------------------------------------------------- 1 | Lecteur vidéo à code source ouvert sans décalage Bluetooth (différents codecs) 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/hr/full_description.txt: -------------------------------------------------------------------------------- 1 | Android video player zasnovan na biblioteci ExoPlayera. Koristi ExoPlayer-ovo FFmpeg proširenje sa svim audio formatima aktiviranima (može obrađivati čak i posebne formate poput AC3, EAC3, DTS, DTS HD, TrueHD itd.). 2 | 3 | Pri korištenju Bluetooth slušalica / zvučnika pravilno sinkronizira zvuk s video snimkom. 4 | 5 | Podržani formati 6 | 7 | * Audio: Vorbis, Opus, FLAC, ALAC, PCM / WAVE (μ-zakon, A-zakon), MP1, MP2, MP3, AMR (NB, WB), AAC (LC, ELD, HE; xHE na Androidu 9+) ), AC-3, E-AC-3, DTS, DTS-HD, TrueHD 8 | * Video: H.263, H.264 AVC (osnovni profil; glavni profil na Androidu 6+), H.265 HEVC, MPEG-4 SP, VP8, VP9, AV1 9 | * Spremnici: MP4, MOV, WebM, MKV, Ogg, MPEG-TS, MPEG-PS, FLV 10 | * Emitiranje: DASH, HLS, SmoothStreaming, RTSP 11 | * Titlovi: SRT, SSA, ASS, TTML, VTT 12 | 13 | Reprodukcija HDR (HDR10 + i Dolby Vision) videa na kompatibilnom / podržanom hardveru. 14 | 15 | Značajke 16 | 17 | * Odabir audio zapisa / titla 18 | * Kontrola brzine reprodukcije 19 | * Vodoravno potezanje prstom i dvostruki dodir za brzo traženje 20 | * Okomito potezanje prstom za mijenjanje svjetlosti (lijevo) / glasnoće (desno) 21 | * Štipanje za zumiranje (Android 7+) 22 | * PiP (Slika u slici) na Androidu 8+ (promjenjiva veličina na Androidu 11+) 23 | * Mijenjanje veličine (prilagodi/obreži) 24 | * Pojačanje glasnoće 25 | * Automatsko podudaranje brzine kadrova na Android TV-u/boksovima (Android 6+) 26 | * Radnje nakon reprodukcije (brisanje datoteke/preskoči na sljedeću) 27 | * Zaključavanje dodirom (dugi dodir) 28 | * Bez oglasa, praćenja ili pretjeranih dozvola 29 | 30 | Za učitavanje vanjskih (neugrađenih) titlova, dugo dodirni gumb za otvaranje datoteke u donjoj traci. Kad to učiniš po prvi put, moći ćeš odabrati osnovnu mapu videa za omogućavanje automatskog učitavanje vanjskih titlova. 31 | -------------------------------------------------------------------------------- /fastlane/metadata/android/hr/full_description_google_extra.txt: -------------------------------------------------------------------------------- 1 | Otvoreni kod / izvorni kod: https://github.com/moneytoo/Player 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/hr/short_description.txt: -------------------------------------------------------------------------------- 1 | Jednostavan video player zasnovan na biblioteci ExoPlayera 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/hr/short_description_google.txt: -------------------------------------------------------------------------------- 1 | Video player s otvorenim kodom bez Bluetooth zaostajanja (razne kodeke) 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/hu/full_description.txt: -------------------------------------------------------------------------------- 1 | Android videólejátszó az ExoPlayer alapján. Az ExoPlayer FFmpeg kiegészítőjét használja az összes audióformátum használatával. (Speciális formátumokat is le tud jásztszani mint a(z) AC3, EAC3, DTS, DTS HD, TrueHD stb.). 2 | 3 | It properly syncs audio with the video track when using Bluetooth earphones/speaker. 4 | 5 | Támogatott formátumok 6 | 7 | * Hang: Vorbis, Opus, FLAC, ALAC, PCM/WAVE (μ-law, A-law), MP1, MP2, MP3, AMR (NB, WB), AAC (LC, ELD, HE; xHE csak Android 9+), AC-3, E-AC-3, DTS, DTS-HD, TrueHD 8 | * Videó: H.263, H.264 AVC (Baseline Profile; Main Profile on Android 6+), H.265 HEVC, MPEG-4 SP, VP8, VP9, AV1 9 | * Containers: MP4, MOV, WebM, MKV, Ogg, MPEG-TS, MPEG-PS, FLV 10 | * Felirat: SRT, SSA, ASS, TTML, VTT 11 | 12 | HDR (HDR10+ és Dolby Vision) video playback on compatible/supported hardware. 13 | 14 | Tulajdonságok 15 | 16 | * Audio/subtitle track selection 17 | * Lejátszássebesség kezelő 18 | * Horizontal swipe and double tap to quickly seek 19 | * Vertical swipe to change brightness (left) / volume (right) 20 | * Pinch to zoom (Android 7+) 21 | * PiP (Picture in Picture) on Android 8+ (resizable on Android 11+) 22 | * Átméretezés (Illesztés/Nyújtás) 23 | * Hangerősítés 24 | * Nincsenek reklámok, nyomkövetők és internet hozzáférés. (tárhely engedély sincsen) 25 | 26 | To load external (non-embedded) subtitles, long press the file open action in the bottom bar. 27 | -------------------------------------------------------------------------------- /fastlane/metadata/android/hu/full_description_google_extra.txt: -------------------------------------------------------------------------------- 1 | Nyított forráskód / forráskód elérhetősége: 2 | https://github.com/moneytoo/Player 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/hu/short_description.txt: -------------------------------------------------------------------------------- 1 | Egyszerű videólejátszó az ExoPlayer alapján 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/hu/short_description_google.txt: -------------------------------------------------------------------------------- 1 | Nyított forráskódú videólejátszó Bluetooth akadozás nélkül és 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/it/full_description.txt: -------------------------------------------------------------------------------- 1 | Lettore video per Android basato sulla libreria ExoPlayer. Utilizza l'estensione FFmpeg di ExoPlayer con tutti i suoi formati audio abilitati (può gestire anche formati speciali come AC3, EAC3, DTS, DTS HD, TrueHD ecc.) 2 | 3 | Sincronizza correttamente l'audio con la traccia video quando si usano cuffie/altoparlanti Bluetooth. 4 | 5 | Formati supportati 6 | 7 | * Audio: Vorbis, Opus, FLAC, ALAC, PCM/WAVE (μ-law, A-law), MP1, MP2, MP3, AMR (NB, WB), AAC (LC, ELD, HE; xHE su Android 9+), AC-3, E-AC-3, DTS, DTS-HD, TrueHD 8 | * Video: H.263, H.264 AVC (profilo base; profilo principale su Android 6+), H.265 HEVC, MPEG-4 SP, VP8, VP9, AV1 9 | * Contenitori: MP4, MOV, WebM, MKV, Ogg, MPEG-TS, MPEG-PS, FLV 10 | * Sottotitoli: SRT, SSA, ASS, TTML, VTT 11 | 12 | Riproduzione video HDR (HDR10+ e Dolby Vision) su hardware compatibile/supportato. 13 | 14 | Caratteristiche 15 | 16 | * Selezione di tracce audio/sottotitoli 17 | * Controllo della velocità di riproduzione 18 | * Scorrimento orizzontale e doppio tocco per cercare rapidamente 19 | * Scorrimento verticale per cambiare la luminosità (sinistra) / volume (destra) 20 | * Pinch to zoom (Android 7+) 21 | * PiP (Picture in Picture) su Android 8+ (ridimensionabile su Android 11+) 22 | * Ridimensionamento (fit/crop) 23 | * Aumento del volume 24 | * Nessuna pubblicità, tracciamento o anche il permesso di Internet (nemmeno il permesso di archiviazione) 25 | 26 | Per caricare sottotitoli esterni (non incorporati), premere a lungo l'azione di apertura del file nella barra inferiore. 27 | -------------------------------------------------------------------------------- /fastlane/metadata/android/it/full_description_google_extra.txt: -------------------------------------------------------------------------------- 1 | Codice sorgente aperto e disponibile: https://github.com/moneytoo/Player 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/it/short_description.txt: -------------------------------------------------------------------------------- 1 | Semplice lettore video basato sulla libreria ExoPlayer 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/it/short_description_google.txt: -------------------------------------------------------------------------------- 1 | Lettore video con codice sorgente aperto senza latenza Bluetooth (vari codec) 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/nb-NO/full_description.txt: -------------------------------------------------------------------------------- 1 | Android-videospiller basert på ExoPlayer-biblioteket. Bruker ExoPlayer sin FFmpeg-utvidelse med alle dens lydformater påskrudd (også spesialformater som AC3, EAC3, DTS, DTS HD, TrueHD osv.). 2 | 3 | Den synkroniserer lyd med videospor når det brukes Blåtannshodesett eller -høyttaler. 4 | 5 | Støttede formater 6 | 7 | * Audio: Vorbis, Opus, FLAC, ALAC, PCM/WAVE (μ-law, A-law), MP1, MP2, MP3, AMR (NB, WB), AAC (LC, ELD, HE; xHE på Android 9+), AC-3, E-AC-3, DTS, DTS-HD, TrueHD 8 | * Video: H.263, H.264 AVC (grunnprofil; hovedprofil på Android 6+), H.265 HEVC, MPEG-4 SP, VP8, VP9, AV1 9 | * Beholdere: MP4, MOV, WebM, MKV, Ogg, MPEG-TS, MPEG-PS, FLV 10 | * Undertekster: SRT, SSA, ASS, TTML, VTT 11 | 12 | HDR (HDR10+ og Dolby Vision)-videoavspilling på kompatibel/støttet maskinvare. 13 | 14 | Funksjoner 15 | 16 | * Valg av lyd/undertekstspor 17 | * Justering av avspillingshastighet 18 | * Vannrett dragning og dobbelttrykk for rask blafring 19 | * Vannrett dragning for å endre lysstyrke (←) / lydstyrke (→) 20 | * Knip for å forstørre (Android 7+) 21 | * BiB (bilde-i-bilde) på Android 8+ (endring av størrelse på Android 11+) 22 | * Endre størrelse (tilpass/beskjær) 23 | * Lydstyrke forbi 100% 24 | * Ingen reklame, sporing, eller Internett-tilgang (ingen lagringstilgang heller) 25 | 26 | For å laste inn eksterne (ikke-innebygde) undertekster, kan du trykke lenge på filåpningshandlingen i bunnfeltet. -------------------------------------------------------------------------------- /fastlane/metadata/android/nb-NO/full_description_google_extra.txt: -------------------------------------------------------------------------------- 1 | Fri programvare: https://github.com/moneytoo/Player -------------------------------------------------------------------------------- /fastlane/metadata/android/nb-NO/short_description.txt: -------------------------------------------------------------------------------- 1 | Enkel videospiller basert på ExoPlayer-biblioteket -------------------------------------------------------------------------------- /fastlane/metadata/android/nb-NO/short_description_google.txt: -------------------------------------------------------------------------------- 1 | Fri prog-videospiller uten Blåtannsforsinkelse og støtte for forskjellige kodek -------------------------------------------------------------------------------- /fastlane/metadata/android/pt/full_description_google_extra.txt: -------------------------------------------------------------------------------- 1 | Código fonte disponível em: https://github.com/moneytoo/Player 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/pt/short_description.txt: -------------------------------------------------------------------------------- 1 | Reprodutor de vídeos baseado na biblioteca ExoPlayer 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/pt/short_description_google.txt: -------------------------------------------------------------------------------- 1 | Reprodutor de vídeos com suporte a diversos formatos multimédia 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ru/full_description.txt: -------------------------------------------------------------------------------- 1 | Android видеоплеер на основе библиотеки ExoPlayer. Он использует расширение ExoPlayer FFmpeg со всеми включенными аудиоформатами (он может обрабатывать даже специальные форматы, такие как AC3, EAC3, DTS, DTS HD, TrueHD и т.д.). 2 | 3 | Он правильно синхронизирует звук с видеодорожкой при использовании наушников/динамика Bluetooth. 4 | 5 | Поддерживаемые форматы 6 | 7 | * Аудио: Vorbis, Opus, FLAC, ALAC, PCM / WAVE (μ-закон, A-закон), MP1, MP2, MP3, AMR (NB, WB), AAC (LC, ELD, HE; xHE на Android 9+ ), AC-3, E-AC-3, DTS, DTS-HD, TrueHD 8 | * Видео: H.263, H.264 AVC (базовый профиль; основной профиль на Android 6+), H.265 HEVC, MPEG-4 SP, VP8, VP9, AV1 9 | * Контейнеры: MP4, MOV, WebM, MKV, Ogg, MPEG-TS, MPEG-PS, FLV 10 | * Субтитры: SRT, SSA, ASS, TTML, VTT 11 | 12 | Воспроизведение видео в формате HDR (HDR10 + и Dolby Vision) на совместимом/поддерживаемом оборудовании. 13 | 14 | Функции 15 | 16 | * Выбор трека аудио/субтитров 17 | * Контроль скорости воспроизведения 18 | * Горизонтальное смахивание и двойное касание для быстрого поиска 19 | * Проведите вверх, чтобы изменить яркость (слева)/громкость (справо) 20 | * Щипок для увеличения изображения (Android 7+) 21 | * PiP (картинка в картинке) на Android 8+ (изменение размера на Android 11+) 22 | * Изменение размера (подгонка/обрезка) 23 | * Увеличение громкости 24 | * Нет рекламы, отслеживания или даже разрешения на Интернет(также нет разрешения на хранение) 25 | 26 | Чтобы загрузить внешние (невстроенные) субтитры, нажмите и удерживайте действие открытия файла на нижней панели. 27 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ru/full_description_google_extra.txt: -------------------------------------------------------------------------------- 1 | Открытый исходный код: https://github.com/moneytoo/Player 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ru/short_description.txt: -------------------------------------------------------------------------------- 1 | Простой видеоплеер на основе библиотеки ExoPlayer 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ru/short_description_google.txt: -------------------------------------------------------------------------------- 1 | Видеоплеер с открытым исходным кодом, без задержки Bluetooth (различных кодеков) 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sr/full_description.txt: -------------------------------------------------------------------------------- 1 | Android video plejer zasnovan na ExoPlayer biblioteci. Koristi ExoPlayer FFmpeg ekstenziju sa svim audio formatima ukljucenim. (Podrzava i specijalne formate poput AC3, EAC3, DTS, DTS HD, TrueHD, itd.). 2 | 3 | Ispravno sinhronizira zvuk sa video klipom kada se koriste Bluetooth slusalice/zvucnici. 4 | 5 | Podrzani formati: 6 | 7 | * Zvuk: Vorbis, Opus, FLAC, ALAC, PCM/WAVE (μ-law, A-law), MP1, MP2, MP3, AMR (NB, WB), AAC (LC, ELD, HE; xHE on Android 9+), AC-3, E-AC-3, DTS, DTS-HD, TrueHD 8 | * Video: H.263, H.264 AVC (Baseline Profile; Main Profile on Android 6+), H.265 HEVC, MPEG-4 SP, VP8, VP9, AV1 9 | * Kontejneri: MP4, MOV, WebM, MKV, Ogg, MPEG-TS, MPEG-PS, FLV 10 | * Strimovanje: DASH, HLS, SmoothStreaming, RTSP 11 | * Titlovi SRT, SSA, ASS, TTML, VTT 12 | 13 | HDR (HDR10+ i Dolby Vision) video plejbeck dostupan na podrzanim uredjajima. 14 | 15 | Funkcije 16 | 17 | * Selekcija zvuka/titlova 18 | * Kontrola brzine playback-a 19 | * Horizontalno prevlacenje i dupli dodir za brzo trazenje 20 | * Vertikalno prevlacenje da promenite osvetljenje (levo) / zvuk (desno) 21 | * Ustinite da zumirate (Android 7+) 22 | * PiP (Slika u slici) na Android 8+ (promena velicine na Android 11+) 23 | * Promena velicine (uklopite/isecite) 24 | * Pojacanje tona 25 | * Automatsko uklapanje frejmova na Android televizorima/kutijama (Android 6+) 26 | * Post-playback akcije (obrisite fajl/idite na sledeci) 27 | * Zakljucajte dodir (Dugo dodirnite) 28 | * Bez reklama, pracenja ili nepotrebnih dozvola 29 | 30 | Da ucitate spoljne titlove, dugo pritisnite file open akciju na donjoj strani ekrana. Kada to uradite prvi put, bice Vam ponudjeno da izaberete glavni video folder da omogucite automatsko ucitavanje spoljnih titlova. 31 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sr/full_description_google_extra.txt: -------------------------------------------------------------------------------- 1 | Otvorenog koda / Otvoreni kod dostupan na: https://github.com/moneytoo/Player 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sr/short_description.txt: -------------------------------------------------------------------------------- 1 | Jednostavan video plejer zasnovan na ExoPlayer biblioteci 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sr/short_description_google.txt: -------------------------------------------------------------------------------- 1 | Video plejer otvorenog koda bez Bluetooth kocenja i podrskom za raznorazne kodeke 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/th/full_description.txt: -------------------------------------------------------------------------------- 1 | เครื่องเล่นวิดีโอ Android บนพื้นฐานไลบรารี ExoPlayer ซึ่งใช้ส่วนขยาย FFmpeg ของ ExoPlayer เพื่อรองรับรูปแบบเสียงทั้งหมด (สามารถรองรับรูปแบบพิเศษเช่น AC3, EAC3, DTS, DTS HD, TrueHD เป็นต้น) 2 | 3 | สามารถซิงค์เสียงกับแทร็กวิดีโอได้อย่างถูกต้องเมื่อใช้หูฟัง/ลำโพง Bluetooth 4 | 5 | รูปแบบที่รองรับ 6 | 7 | * เสียง: Vorbis, Opus, FLAC, ALAC, PCM/WAVE (μ-law, A-law), MP1, MP2, MP3, AMR (NB, WB), AAC (LC, ELD, HE; xHE บน Android 9+), AC-3, E-AC-3, DTS, DTS-HD, TrueHD 8 | * วีดีโอ: H.263, H.264 AVC (Baseline Profile; Main Profile บน Android 6+), H.265 HEVC, MPEG-4 SP, VP8, VP9, AV1 9 | * คอนเทนเนอร์: MP4, MOV, WebM, MKV, Ogg, MPEG-TS, MPEG-PS, FLV 10 | * คำบรรยาย: SRT, SSA, ASS, TTML, VTT 11 | 12 | รองรับการเล่นวิดีโอ HDR (HDR10+ และ Dolby Vision) บนฮาร์ดแวร์ที่เข้ากันได้/ที่รองรับ 13 | 14 | คุณสมบัติ 15 | 16 | * เลือกแทร็กเสียง / คำบรรยาย 17 | * ปรับความเร็วในการเล่น 18 | * ปัดแนวนอนและแตะสองครั้งเพื่อกรอวีดีโออย่างรวดเร็ว 19 | * ปัดแนวตั้งเพื่อปรับความสว่าง (ซ้าย) / ระดับเสียง (ขวา) 20 | * ขยับนิ้วเพื่อย่อหรือขยาย (Android 7+) 21 | * PiP (ภาพในภาพ) บน Android 8+ (สามารถปรับขนาดได้บน Android 11+) 22 | * ปรับขนาด (พอดี/ครอบตัด) 23 | * บูสระดับเสียงให้ดังยิ่งขึ้น 24 | * ไม่มีโฆษณา ไม่มีการติดตาม หรือแม้แต่การขอสิทธิ์ออกอินเทอร์เน็ต (ไม่ขอสิทธิ์พื้นที่เก็บข้อมูลเช่นกัน) 25 | 26 | หากต้องการใช้คำบรรยายภายนอก (ไม่ฝัง) ให้กดรูป โฟลเดอร์ ในแถบด้านล่างค้างไว้ 27 | -------------------------------------------------------------------------------- /fastlane/metadata/android/th/full_description_google_extra.txt: -------------------------------------------------------------------------------- 1 | โอเพ่นซอร์ส / ซอร์สโค้ด: https://github.com/moneytoo/Player 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/th/short_description.txt: -------------------------------------------------------------------------------- 1 | เครื่องเล่นวิดีโอที่เรียบง่ายบนพื้นฐานไลบรารี ExoPlayer 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/th/short_description_google.txt: -------------------------------------------------------------------------------- 1 | เครื่องเล่นวิดีโอโอเพ่นซอร์สที่ไม่มี Bluetooth lag และ รองรับ codec หลากหลาย 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/short_description.txt: -------------------------------------------------------------------------------- 1 | Простий програвач відео оснований на бібліотеці ExoPlayer 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/full_description.txt: -------------------------------------------------------------------------------- 1 | 基于ExoPlayer库的Android视频播放器。它使用ExoPlayer的FFmpeg扩展名并启用了所有音频格式(它甚至可以处理诸如AC3,EAC3,DTS,DTS HD,TrueHD等特殊格式)。 2 | 3 | 使用蓝牙耳机/扬声器时,它可以正确地将音频与视频轨道同步。 4 | 5 | 支持的格式 6 | 7 | * 音频:Vorbis,Opus,FLAC,ALAC,PCM / WAVE(μ律,A律),MP1,MP2,MP3,AMR(NB,WB),AAC(LC,ELD,HE; Android 9+上的xHE ),AC-3,E-AC-3,DTS,DTS-HD,TrueHD 8 | * 视频:H.263,H.264 AVC(基准配置文件; Android 6+上的主要配置文件),H.265 HEVC,MPEG-4 SP,VP8,VP9,AV1 9 | * 容器:MP4,MOV,WebM,MKV,Ogg,MPEG-TS,MPEG-PS,FLV 10 | * 流媒体:DASH、HLS、SmoothStreaming、RTSP 11 | * 字幕:SRT,SSA,ASS,TTML,VTT 12 | 13 | 在兼容/支持的硬件上播放HDR(HDR10 +和Dolby Vision)视频。 14 | 15 | 特征 16 | 17 | * 音频/字幕轨道选择 18 | * 播放速度控制 19 | * 水平滑动并双击以快速查找 20 | * 垂直滑动以更改亮度(左)/音量(右) 21 | * 捏放大(Android 7+) 22 | * Android 8+上的PiP(画中画)(在Android 11+上可调整大小) 23 | * 调整大小(适合/裁剪) 24 | * 音量提升 25 | * Android TV/盒子上的自动帧率匹配(Android 6+) 26 | * 回放后动作(删除文件/跳到下一个) 27 | * 触摸锁定 (长按) 28 | * 无广告、跟踪或过度权限 29 | 30 | 要加载外部(非嵌入式)字幕,请长按底部栏中的文件打开操作。第一次这样做时,您将被要求选择根视频文件夹以启用外部字幕的自动加载。 31 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/full_description_google_extra.txt: -------------------------------------------------------------------------------- 1 | 开源/源代码位于:https://github.com/moneytoo/Player 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/images/phoneScreenshots/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/fastlane/metadata/android/zh-CN/images/phoneScreenshots/2.png -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/images/phoneScreenshots/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/fastlane/metadata/android/zh-CN/images/phoneScreenshots/3.png -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/short_description.txt: -------------------------------------------------------------------------------- 1 | 基于 ExoPlayer 库的简单视频播放器 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/short_description_google.txt: -------------------------------------------------------------------------------- 1 | 开源视频播放器,无蓝牙延迟,并支持各种编解码器 2 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | # IDE (e.g. Android Studio) users: 3 | # Gradle settings configured through the IDE *will override* 4 | # any settings specified in this file. 5 | # For more details on how to configure your build environment visit 6 | # http://www.gradle.org/docs/current/userguide/build_environment.html 7 | # Specifies the JVM arguments used for the daemon process. 8 | # The setting is particularly useful for tweaking memory settings. 9 | org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 10 | # When configured, Gradle will run in incubating parallel mode. 11 | # This option should only be used with decoupled projects. More details, visit 12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 13 | # org.gradle.parallel=true 14 | # AndroidX package structure to make it clearer which packages are bundled with the 15 | # Android operating system, and which are packaged with your app"s APK 16 | # https://developer.android.com/topic/libraries/support-library/androidx-rn 17 | android.useAndroidX=true 18 | # Automatically convert third-party libraries to use AndroidX 19 | android.enableJetifier=true 20 | 21 | # Prevent AbstractMethodError when using local ExoPlayer libs 22 | android.useFullClasspathForDexingTransform=true 23 | android.nonTransitiveRClass=false 24 | android.nonFinalResIds=false 25 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | @rem SPDX-License-Identifier: Apache-2.0 17 | @rem 18 | 19 | @if "%DEBUG%"=="" @echo off 20 | @rem ########################################################################## 21 | @rem 22 | @rem Gradle startup script for Windows 23 | @rem 24 | @rem ########################################################################## 25 | 26 | @rem Set local scope for the variables with windows NT shell 27 | if "%OS%"=="Windows_NT" setlocal 28 | 29 | set DIRNAME=%~dp0 30 | if "%DIRNAME%"=="" set DIRNAME=. 31 | @rem This is normally unused 32 | set APP_BASE_NAME=%~n0 33 | set APP_HOME=%DIRNAME% 34 | 35 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 36 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 37 | 38 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 39 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 40 | 41 | @rem Find java.exe 42 | if defined JAVA_HOME goto findJavaFromJavaHome 43 | 44 | set JAVA_EXE=java.exe 45 | %JAVA_EXE% -version >NUL 2>&1 46 | if %ERRORLEVEL% equ 0 goto execute 47 | 48 | echo. 1>&2 49 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 50 | echo. 1>&2 51 | echo Please set the JAVA_HOME variable in your environment to match the 1>&2 52 | echo location of your Java installation. 1>&2 53 | 54 | goto fail 55 | 56 | :findJavaFromJavaHome 57 | set JAVA_HOME=%JAVA_HOME:"=% 58 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 59 | 60 | if exist "%JAVA_EXE%" goto execute 61 | 62 | echo. 1>&2 63 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 64 | echo. 1>&2 65 | echo Please set the JAVA_HOME variable in your environment to match the 1>&2 66 | echo location of your Java installation. 1>&2 67 | 68 | goto fail 69 | 70 | :execute 71 | @rem Setup the command line 72 | 73 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 74 | 75 | 76 | @rem Execute Gradle 77 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 78 | 79 | :end 80 | @rem End local scope for the variables with windows NT shell 81 | if %ERRORLEVEL% equ 0 goto mainEnd 82 | 83 | :fail 84 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 85 | rem the _cmd.exe /c_ return code! 86 | set EXIT_CODE=%ERRORLEVEL% 87 | if %EXIT_CODE% equ 0 set EXIT_CODE=1 88 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% 89 | exit /b %EXIT_CODE% 90 | 91 | :mainEnd 92 | if "%OS%"=="Windows_NT" endlocal 93 | 94 | :omega 95 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':doubletapplayerview', 'android-file-chooser' 2 | rootProject.name = "Player" -------------------------------------------------------------------------------- /web_hi_res_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eneim/just-player/645605674586b0c77ed25f33a8e11a528fa071de/web_hi_res_512.png --------------------------------------------------------------------------------