Releases: Xandir150/Xplayer2
v1.0.9b3
Что нового в 1.0.9b3
Облако Mail.ru
- Открываются публичные ссылки Облака Mail.ru (
cloud.mail.ru/public/…) — вставьте ссылку в разделе «Источники» или просто «Поделиться» в XPlayer2. - Ссылка на файл играет сразу; ссылка на папку открывает список видео (с подпапками) и запоминается строкой в «Источниках» с именем папки.
- Стриминг с перемоткой, без логина и токенов.
Lazy 3D — исправлен баг «работает один раз, потом никак»
- Повреждённый файл модели больше не блокирует Lazy 3D навсегда: загрузка теперь проверяется (размер + сигнатура TFLite), а модель, которую не удалось загрузить, удаляется и перекачивается при следующем включении — само лечится.
- Устранена гонка параллельных загрузок модели, которая и могла портить файл.
- Lazy 3D теперь предлагается только там, где стерео есть куда выводить — в очках (или когда очки = основной ультраширокий экран). Раньше на экране телефона тоггл молча ничего не делал. При отключении очков Lazy 3D выключается сам.
- Кнопка/статус больше не «зависают» включёнными при ошибке — повторная попытка в одно нажатие.
- Надёжное выключение: убраны утечки и редкое «заклинивание» при быстром выкл/вкл.
Если у вас Lazy 3D переставал запускаться — на этой версии при следующем включении модель скачается заново сама.
Прочее
- Сборка теперь только ARM (arm64-v8a + armeabi-v7a) — APK компактнее.
Тестерам со звуком в очках
Если звук в очках кажется «одноканальным» — напишите, пожалуйста: (1) моно в обоих ушах или одно ухо молчит, (2) онлайн-видео или локальный файл, (3) меняется ли что-то при «Усиление: выкл» в плеере, (4) как звучит YouTube/другой плеер на тех же очках.
v1.0.9b2
XPlayer2 1.0.9 beta 2
Pre-release for testing — sideload the full APK below.
New in beta 2
- YouTube links — paste or share a YouTube link and it plays, just like VK/OK (no YouTube client UI). Uses an unofficial extraction, so it may break when YouTube changes — for personal use.
- Lazy 3D (2D→3D) — much cleaner. The on-the-fly depth conversion now has temporal stability (no more depth shimmer / "breathing"), a guided edge-refine that snaps depth onto real image edges (kills the halos), and a comfort-tuned disparity — close to "watchable, low-artifact".
- Louder online audio. Online streams (VK / OK / YouTube / Yandex / DLNA) are often quiet, wide-dynamic-range cinema mixes; they now get a gentle default loudness boost (still adjustable per clip; 0 = off). If something is now too loud — or still too quiet, especially in the glasses — please tell us.
Also in 1.0.9 (since 1.0.8)
- Saved sources — open a Yandex Disk folder, a VK playlist or a VK community and it's remembered as a row in the Sources tab (now named after the real folder / community); one tap to reopen. From the URL field or the Share sheet.
- RayNeo Air glasses — detected and play side-by-side like XREAL; the Air 3s Pro flips 2D/3D from the in-app glasses menu and re-asserts it on reconnect; plugging RayNeo in no longer auto-launches the app or pops a USB prompt.
Please test
- YouTube: paste a link and share one to the app.
- Lazy 3D: try 2D→3D on a few clips — watch for artifacts / flicker.
- Audio: is online audio comfortable now, both on the phone and in the glasses?
The attached APK is the full sideload build (includes the VITURE SDK). Google Play ships the 16 KB-compliant play build.
v1.0.9b1
XPlayer2 1.0.9 beta 1
Pre-release for testing — sideload the full APK below.
New since 1.0.8
- Saved sources — opening a Yandex Disk folder, a VK playlist (
vkvideo.ru/playlist/…) or a VK community now remembers it as a row in the Sources tab (after your SMB / DLNA); one tap to reopen. Saved both from the URL field and from the system Share sheet; single videos aren't saved (Recent covers those). VK rows show the real community name. - RayNeo Air glasses — detected and play side-by-side like XREAL; switch 2D/3D with the temple buttons (Volume + Brightness together), and the Air 3s Pro can flip 2D/3D from the in-app glasses menu. Plugging RayNeo in no longer auto-launches the app or shows a USB association prompt.
Fixes
- A Yandex Disk folder now shows up in Sources right after you open it.
- Fixed the oversized VK logo on the Hughey button.
Please test
- Yandex Disk folders and VK playlists / communities: open by pasting a link and via Share → the row should appear, reopen, and delete (swipe or long-press).
- RayNeo (if you have it): 2D/3D from the glasses menu (Air 3s Pro) and that plugging in no longer pops the app/USB dialog.
The attached APK is the full sideload build (includes the VITURE SDK). Google Play ships the 16 KB-compliant play build.
XPlayer2 1.0.8
XPlayer2 1.0.8
New
- Yandex Disk source — paste a public folder or file link (
disk.yandex.ru/yadi.sk) to browse folders and play, with per-quality selection (defaults to the highest). - Saved sources — open a Yandex Disk folder, a VK playlist (
vkvideo.ru/playlist/…) or a VK community and it's remembered as a row in the Sources tab (after your SMB / DLNA), one tap to reopen. Saved both from the URL field and from the system Share sheet; single videos aren't saved (Recent covers those). - Share & paste — XPlayer2 now appears in the system Share sheet for video files and links, and the Sources URL field auto-pastes a link from the clipboard (the keyboard opens reliably).
Player & remote
- Redesigned phone remote and Recent list with Material You accent colours (follows the system theme; brand-purple fallback below Android 12).
- One mode button now cycles 2D → Lazy 3D → OU→SBS → SBS (no more separate Lazy 3D button); removed the system settings gear.
- Player works with TV / media remotes and D-pad: play/pause, ±10 s skip (rewind / fast-forward / next / previous), captions → subtitles.
- Recent: swipe to delete (with Undo) or long-press to remove (for remote / D-pad); Yandex items are remembered and resume.
Glasses
- RayNeo Air support — the Air glasses are detected and play side-by-side like XREAL; switch 2D/3D with the glasses' temple buttons (Volume + Brightness together). The Air 3s Pro can also flip 2D/3D straight from the in-app glasses menu. Plugging RayNeo in no longer auto-launches the app or shows a USB association prompt.
Fixes
- Lazy 3D crash on some devices (e.g. ZTE 80 Ultra / Axon): the GPU delegate is now compatibility-checked before use and falls back to CPU instead of crashing; a toast explains the outcome.
- Remote ±10 s seek; clearer player overlay (gradient scrim).
- Fixed an oversized VK logo on the Hughey button.
The attached APK is the full sideload build (includes the VITURE SDK). Google Play ships the 16 KB-compliant play build.
XPlayer2 1.0.7
XPlayer2 1.0.7
Everything new since 1.0.6.
Glasses & 3D
• Lazy 3D (2D→3D): real-time monocular depth conversion (auto-downloaded MiDaS model, GPU-accelerated) to watch flat video in stereo on the glasses.
• VITURE glasses: 2D/3D switching via the VITURE One SDK, alongside XREAL.
• Hands-free head-gesture menu on the glasses: nod to move, turn to switch tabs, tilt for OK/Back — mirrored per-eye on the 3D panel.
• 3-state SBS button (2D / OU→SBS / SBS) for half-format clips.
• Mode-aware controls: SBS default in 3D goggle mode, Shift/Lazy 3D gated by mode, current glasses mode shown as a toolbar chip.
• Keep the glasses panel awake during playback; stop cleanly when it disconnects.
Picture quality
• Fixed colour banding on the SBS/glasses path (RGBA8888 + 10-bit framebuffer + dithering).
Sources & content
• Files and Network merged into a single Sources tab, with DLNA/SMB browsing.
• Hughey 3D-films browser (shown by default on RU, unlockable elsewhere) with caching, posters and title search.
• VK video extraction via the al_video.php endpoint.
Player & remote
• Per-clip audio/volume boost plus remote volume control.
• Subtitles off by default, with remote subtitle control.
• Resolved video titles shown on the remote.
• Android TV: visible D-pad focus, working audio menu, title-overflow fix.
Languages
• English, Russian, Spanish, Chinese.
Under the hood
• Updated Media3 1.10.1, Coil 3, Kotlin 2.3.21, AndroidX / Gradle / TFLite.
• IMU streams only when needed; debug logging stripped for release; double-press Back to exit.
v1.0.7b3
1.0.7 beta 3
Prerelease — please test before promoting to stable. The signed APK is attached by the Android Release workflow.
Lazy 3D — head-tracking now actually works
- Fixed the head-tracking axes: turning your head (yaw) and nodding (pitch) now drive the parallax correctly; sideways head-tilt (roll) is ignored as intended.
- Added gyro zero-rate-bias cancellation so the picture no longer drifts off into a corner — it eases back to centre when your head is still.
- Starts instantly: the IMU USB stream start and the depth-model GPU load moved off the UI thread, with a "starting…" state on the button (disabled while spinning up) so it's clear the feature is coming up and you don't double-tap.
- Fixed the glasses USB link being dropped during playback (it was tied to the home screen's lifecycle) — head-tracking now keeps a live connection for the whole session.
- Fixed a viewport bug that shrank the picture into a small square in the bottom-left while depth synthesis was active (and didn't restore on toggle-off).
- Lazy 3D is offered only for plain-2D clips; the Shift button shows only in OU→SBS mode.
VK / sources
- Fixed VK playback (vk.com / vkvideo.ru) after VK retired the old direct URLs — links now resolve via the internal
al_video.phpendpoint. - New Hughey browser in Sources: lists the group's 3D films with posters, search by title, and disk-cached results (hidden on the Spanish locale).
- Merged Files + Network into a single "Sources" tab, with an Open Video file picker next to Hughey.
XR glasses
- Playback stops when the goggles' panel disconnects (taken off / unplugged) — pick up again from Recent.
- Glasses display-mode chip in the toolbar shows the current mode (e.g. "3D 90Hz"); tap it to change.
- On 3D goggles, unlabeled clips now default to SBS, and the chosen auto-SBS mode is remembered per clip so it survives stop/disconnect.
- Stereo badge/button fixes — correct SBS vs OU→SBS labels on resume.
Remote / playback
- Boost volume is now per-clip (a loud clip's boost no longer blasts a quiet one), applies live, and has a clearer label.
- Subtitles off by default, with subtitle selection on the phone remote.
- Remote shows the resolved title instead of
video-<id>. - Stop button narrowed to 1/3 width and centred to avoid accidental taps.
Other
- Multilingual UI: English, Russian, Spanish, Chinese.
v1.0.7b2
1.0.7 beta 2
Prerelease — large feature set, please test before promoting to stable. The signed APK is attached by the Android Release workflow.
Audio (critical fixes)
- Fixed no sound on the glasses that also killed system-wide audio (YouTube etc.) until reinstall — caused by force-claiming the glasses' USB Audio interface and by a lingering
LoudnessEnhancerlocking the USB audio device. We now claim only HID interfaces and release audio effects aggressively. - Wired FFmpeg E-AC3 / TrueHD / MLP surround decoders (on top of AC3/DTS) so 5.1+ tracks aren't silent.
XR glasses
- 2D ⇄ 3D display-mode button for XREAL Air (USB MCU); multi-brand detection (XREAL/VITURE/RayNeo); mode re-syncs with the hardware after unplug/replug.
- Render state (SBS / source layout / aspect / parallax / depth) now correctly targets the glasses display, not the hidden phone view.
Stereo handling
- 3-state stereo button: 2D → OU→SBS → SBS. Auto-detects Full-SBS (3840×1080) and OU; for Half-SBS/Half-OU (which are 16:9 and indistinguishable from 2D by resolution) you pick once and it's remembered per clip.
- Aspect-ratio control (Auto/16:9/4:3/21:9/32:9/1:1/2.39:1) on the player and the phone remote.
Lazy 3D (new)
- Head-tracking parallax from the XREAL IMU.
- On-the-fly 2D→3D depth synthesis (MiDaS v2.1 small): depth model auto-downloads on first use / background Wi-Fi prefetch; runs on the GPU delegate at ~17 ms/frame on Snapdragon 8 Gen 2 (real-time). View synthesis (depth→per-eye disparity + edge dilation) adapted from nagadomi/nunif (iw3).
Other
- Subtitle "Off"; audio loudness boost; quality/battery (direct SurfaceView when no transform, HDR colour mode, network-aware buffering); DLNA crash & discovery fixes; Android TV (Leanback + D-pad); toolbar logo decode off the main thread.
v1.0.7b1
1.0.7 beta 1
First beta of 1.0.7. Marked prerelease because the Android TV surface area is large and brand new — please file any regressions before this gets promoted to a stable 1.0.7.
The signed release APK is attached automatically by the Android Release workflow.
Fixes
- DLNA browsing no longer crashes the app on slow renderers. A
SocketTimeoutExceptionfrom the SOAP browse request used to escape its coroutine and tear down the process. Now the timeout is caught, an empty result is returned, and the worst the user sees is an empty folder. - DLNA discovery is faster and more reliable. Device descriptions are fetched in parallel instead of blocking the SSDP receive loop, and the connect/read timeouts are larger (good for slow NAS boxes).
- Toolbar logo decode no longer blocks
MainActivity.onCreate. Moving the PNG decode + scale off the main thread fixes a likely source ofMessageQueue.nativePollOnceANRs on slower devices.
Player
- Subtitle track menu with an explicit "Off" entry. Closes #6. The new menu mirrors across both eyes in SBS mode just like the audio menu does.
- Audio loudness boost up to +24 dB. Closes #7. Powered by
android.media.audiofx.LoudnessEnhancer, persisted globally, cycled from the first row of the audio menu (0 → +6 → +12 → +18 → +24 dB). - Aspect ratio control for 3D playback. Closes #3. New "Ratio" button in the player overlay cycles through Auto / 16:9 / 4:3 / 21:9 / 32:9 / 1:1 / 2.39:1. The choice is persisted per item in the Recent tab so faces stop getting elongated on existing 3D clips. Adapted from joric/Xplayer2
android-tv.
Android TV
Closes #8. Based on joric/Xplayer2 android-tv — thanks to @joric for the working reference implementation.
- App now appears on Android TV / RayNeo / Google TV:
LEANBACK_LAUNCHERintent filter,uses-featuredeclarations for leanback/touchscreen/camera markedrequired=false. - New 320×180 vector TV banner.
- D-pad key handling in the player: LEFT/RIGHT seek -5 / +15 s, CENTER/ENTER toggles the controller, BACK collapses menus then the overlay, MEDIA_PLAY_PAUSE / SPACE toggle play.
- D-pad navigation in the main UI: tabs are focusable, DPAD_DOWN drops focus into the active fragment, DPAD_UP from the first row returns to the tab strip.
- Recent and Network list items are focusable: DPAD_RIGHT focuses the delete affordance, ENTER deletes. SMB shares can now be deleted from a TV remote.
PlayerActivitydeclares enoughconfigChangesto survive a remote/keyboard plug event without restarting.
Build
- Gradle 8.13 → 9.4.1, AGP 8.13.1 → 9.2.1, Kotlin 2.0.21 → 2.2.10.
- Compose plugin matched at 2.2.10.
gradle-daemon-jvm.propertieschecked in (JetBrains JDK 21) so the build JVM is consistent across contributors.
Not in this release
- VITURE 2D/3D auto-toggle: requires VITURE's closed SDK; not bundled here. The in-app SBS toggle still works as before, but you'll need to enable hardware 3D on the glasses themselves.
- The fallback URI / MediaStore-resolved recents from joric's branch — separate refactor, deferred.
Lazy 3D depth models
Monocular depth models for the Lazy 3D feature (auto-downloaded by the app). midas_v21_small.tflite = MiDaS v2.1 small, 256x256 FP32, ImageNet-normalised input, inverse-depth output.
v1.0.6
New Features
- Foreground service for external display playback with MediaSession
- Energy-efficient background playback when phone screen is off
- Notification with playback controls
- Proper system integration (Bluetooth, media buttons)
Android 15 Compatibility
- Full edge-to-edge display support (API 35+)
- Transparent status/navigation bars
- Proper window insets handling
- Display cutout mode ALWAYS for fullscreen playback
Bug Fixes
- Fixed SecurityException crash when opening files from Recent
- Added URI permission validation before playback
- Graceful fallback with user-friendly error message
- Fixed MediaSession duplicate ID crash
- Updated Material Components to 1.13.0
Dependencies
- Added media3-session for MediaSession support
- Material Components 1.12.0 → 1.13.0
Other
- Updated VK icon
- New icons: ic_glasses, ic_stop