Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc-android
  • thresh/vlc-android
  • Dekans/vlc-android
  • robUx4/vlc-android
  • tguillem/vlc-android
  • Corbax/vlc-android
  • judeosby/vlc-android
  • chouquette/vlc-android
  • washingtonmurphy93/vlc-android
  • wipawanbeadklang540/vlc-android
  • xcorail/vlc-android
  • Aza/vlc-android
  • Skantes/vlc-android
  • filipjares/vlc-android
  • kazemihabib/vlc-android
  • amq10x/vlc-android
  • qadrian370/vlc-android
  • shivanshs9/vlc-android
  • vitaliyg2/vlc-android
  • orgads/vlc-android
  • rom1v/vlc-android
  • evidence/vlc-android
  • lk888/vlc-android
  • Klaus81/vlc-android
  • EwoutH/vlc-android
  • XilasZ/vlc-android
  • pawelpablo1975/vlc-android
  • uae2ae/vlc-android
  • Garf/vlc-android
  • abetatsunori7/vlc-android
  • ePirat/vlc-android
  • magsoft/vlc-android
  • quink/vlc-android
  • Ektos974/vlc-android
  • CymGen30/vlc-android
  • b1ue/vlc-android
  • alessiavalenti8/vlc-android
  • bars27101982/vlc-android
  • billybanda18/vlc-android
  • dklvip/vlc-android
  • sherylynn/vlc-android
  • ramcoach5/vlc-android
  • takise/vlc-android
  • peibolovedie/vlc-android
  • AMHeijboer/vlc-android
  • dahburj/vlc-android
  • gobennyb/vlc-android
  • masripmasrip824/vlc-android
  • bubu/vlc-android
  • tmk907/vlc-android
  • gorbahaaa/vlc-android
  • govind3321/vlc-android
  • jamieboyer42818/vlc-android
  • mrtakilapop/vlc-android
  • kazikarter90/vlc-android
  • chunyie771/vlc-android
  • nop404/vlc-android
  • hcalzazperz/vlc-android
  • zagwojtek69/vlc-android
  • nikonnick24/vlc-android
  • gmohiuddin215/vlc-android
  • stheinthan31/vlc-android
  • rogelioloreto29/vlc-android
  • philippestcyr5/vlc-android
  • Happyheather20/vlc-android
  • jimbobmcgee/vlc-android
  • mohwie/vlc-android
  • HeartBeat1608/vlc-android
  • jahan/vlc-android
  • Kevo1987/vlc-android
  • rrangel3584/vlc-android
  • xfridrich/vlc-android
  • devswami23/vlc-android
  • Isira-Seneviratne/vlc-android
  • PartyPhone22/vlc-android
  • kmajeshkrishnan/vlc-android
  • ramirotorresjr/vlc-android
  • aaronsalas469/vlc-android
  • arnan.np31/vlc-android
  • hkosacki/vlc-android
  • mg0691872/vlc-android
  • louregni/vlc-android
  • ritmapp/vlc-android
  • diegofn/vlc-android
  • s-ayush2903/vlc-android
  • chrisbohn1984/vlc-android
  • alexandre-janniaux/vlc-android
  • optimumpr/vlc-android
  • chirag-jn/vlc-android
  • e9ab98e991ab/vlc-android
  • suvDev/vlc-android
  • killthelord/vlc-android
  • Phoenix/vlc-android
  • soriyallc/vlc-android
  • tda1009/vlc-android
  • rhstone/vlc-android
  • ltnokiago/vlc-android
  • elbrujo1987/vlc-android
  • m1s4k1/vlc-android
  • mdc/vlc-android
  • arnaudj/vlc-android
  • abhinavmarwaha/vlc-android
  • dali546/vlc-android
  • Jeffset/vlc-android
  • megan30/vlc-android
  • lizhengdao/vlc-android
  • YajTPG/vlc-android
  • halcyon/vlc-android
  • ilya.yanok/vlc-android
  • jeramydhallmon/vlc-android
  • tijoemecano77/vlc-android
  • cjcj125125/vlc-android
  • dejan2609/vlc-android
  • JATIN2111999/vlc-android
  • imrohitkumar/vlc-android
  • sagudev/vlc-android
  • ILoveLin/vlc-android
  • tfighiera/vlc-android
  • snehil101/vlc-android
  • MKornelsen/vlc-android
  • m/vlc-android
  • core1024/vlc-android
  • vadimdolgachev/vlc-android
  • Kk77539/vlc-android
  • linzj/vlc-android
  • dantalian-pv/vlc-android
  • admkhalid/vlc-android
  • yaron/vlc-android
  • kn21091974/vlc-android
  • mylove1302/vlc-android
  • roblav96/vlc-android
  • alabiaga/vlc-android
  • kmnaveen101/vlc-android
  • nikiforoff1407/vlc-android
  • Android-Jester/vlc-android
  • frieda.rtwski/vlc-android
  • glaciers7506/vlc-android
  • rahul-gill/vlc-android
  • gaoxugang/vlc-android
  • Rishavgupta12345/vlc-android
  • dinho991556460/vlc-android
  • lighterowl/vlc-android
  • mary-kate/vlc-android
  • adnank20216/vlc-android
  • anthonylgutierrez79/vlc-android
  • Heliottw/vlc-android
  • mu1zix.ft3/vlc-android
  • yvesmaltais1212/vlc-android
  • ereme/vlc-android
  • jhonypalomino829/vlc-android
  • mx1up/vlc-android
  • sjwaddy/vlc-android
  • MohitMandalia/vlc-android
  • temaershov/vlc-android
  • js6pak/vlc-android
  • mishikallu/vlc-android
  • irfanmumtaz008/vlc-android
  • smurfohrachie/vlc-android
  • Goooler/vlc-android
  • eldo203050/vlc-android
  • dejesuszeus99/vlc-android
  • mfkl/vlc-android
  • Samfun75/vlc-android
  • markg85/vlc-android-ipfs
  • doktamelek911/vlc-android
  • wikwity/vlc-android
  • aangelmaker/vlc-android
  • krawczykradek119/vlc-android
  • ylz18180813163/vlc-android
  • galaxy9sx3/vlc-android
  • huajie2020/vlc-android
  • XuanTung95/vlc-android
  • kl/vlc-android
  • melihyolcu83/vlc-android
  • rt1shnik/vlc-android
  • jerryboy307/vlc-android
  • ikeuzochukwu6/vlc-android
  • patrikgolis/vlc-android
  • Ismavv/vlc-android
  • clementosumo/vlc-android
  • joshlamp66/vlc-android
  • nkmoyonyathiericyounge/vlc-android
  • DanTm99/vlc-android
  • Jeffrow41/vlc-android
  • fromphfr/vlc-android
  • 16project/vlc-android
  • Tomas8874/vlc-android
  • fixxxer87/vlc-android
  • sanjay/vlc-android
  • franciscojrp/vlc-android
  • cashellauswaus23/vlc-android
  • hengwu0/vlc-android
  • naythu2020rain/vlc-android
  • TongtengInhole/vlc-android
  • pupdoggy666/vlc-android
  • jcj921013/vlc-android
  • Gc6026/vlc-android
  • crijojc/vlc-android
  • mdrewight/vlc-android
  • davidhaywood0782/vlc-android
  • jbschtt/vlc-android
  • macfarlandcamel/vlc-android
  • syazairi/vlc-android
  • Commander01/vlc-android
  • baileyterry014/vlc-android
  • rodrickfranklin38/vlc-android
  • diego1245hernb/vlc-android
  • anton.canada/vlc-android
  • egazaekb/vlc-android
  • Marissa111113/vlc-android
  • jeinerbruno2/vlc-android
  • wehnie13/vlc-android
  • ozill87/vlc-android
  • legionfso/vlc-android
  • anazahirajoel/vlc-android
  • naomirojas1227/vlc-android
  • xbao/vlc-android
  • antoni.kozubek/vlc-android
  • pajela8482/vlc-android
  • karlfandango55/vlc-android
  • ruanbester07/vlc-android
  • chigita73/vlc-android
  • giu.pat6/vlc-android
  • Aura/vlc-android
  • marcwabo/vlc-android
  • contact.adgrafix/vlc-android
  • exlaverdad/vlc-android
  • simon.marquis88/vlc-android
  • youngkinsamantha421/vlc-android
  • edgard1161/vlc-android
  • agzx77/vlc-android
  • ha7204993/vlc-android
  • alghazwani.jar.6090/vlc-android
  • zrowton1206/vlc-android
  • darek1979513/vlc-android
  • matthiaskett18198/vlc-android
  • kubadyr77/vlc-android
  • romanstudeny1982/vlc-android
  • kumar107375/vlc-android
  • schong0525/vlc-android
  • Kt/vlc-android
  • jovelyn.esconde125/vlc-android
  • corriemacbarnard/vlc-android
  • apisbg91/vlc-android
  • yyusea/vlc-android
  • protechq88/vlc-android
  • rmangaraman/vlc-android
  • soutomikel/vlc-android
  • goregladaleksej5/vlc-android
  • tao/vlc-android
  • aruiz595/vlc-android
  • horvathpeter1202/vlc-android
  • litteh82/vlc-android
  • kerriochoa96/vlc-android
  • skshemul2022/vlc-android
  • popy/vlc-android
  • mizadpanahdev/vlc-android
  • pinarim2035/vlc-android
  • davidgooch1127/vlc-android
  • NyanCatTW1/vlc-android
  • Pendynurcahyo/vlc-android
  • fcartegnie/vlc-android
  • xiaoxiao921/vlc-android
  • rjtoell/vlc-android
  • devanshu6445/vlc-android
  • DopeDo69/vlc-android
  • quimsical/vlc-android
  • nickita.koltsoff/vlc-android
  • zeestander8617/vlc-android
  • alexsonarin06/vlc-android
  • minh189999h/vlc-android
  • JonnycatMeow/vlc-android
  • pup.ragnarok.1984/vlc-android2
  • jlcalderon13/vlc-android
  • franciszekk51214/vlc-android
  • yinsheng996/vlc-android
  • KenN3RD/vlc-android
  • leogps/vlc-android
  • alicuteo0407/vlc-android
  • MessirVoland/vlc-android
  • brett2uk/vlc-android
  • thomas.hermes/vlc-android
  • dgyudin/vlc-android
  • anuoshemohammad/vlc-android
  • r7truong/vlc-android
  • aaa1115910/vlc-android
  • arunkennedy78/vlc-android
  • nicholaszarra0069/vlc-android
  • georgipetrovdochev/vlc-android
  • Nikhil-z/vlc-android
  • misb1033/vlc-android
  • ktcoooot1/vlc-android
  • manmuc5/vlc-android
  • ahwhatisinttaken/vlc-android
  • m.nozka90/vlc-android
  • kabeermuhammad124319/vlc-android
  • ANGELONCE/vlc-android
  • manstabuk/vlc-android
  • yajcoca/vlc-android
  • dreamscell83/vlc-android
  • oldsssteveo/vlc-android
  • c0ff330k/vlc-android
  • ZhangXinmin528/vlc-android
  • lacsimarnald09/vlc-android
  • boykaisaac758/vlc-android
  • ooseidesmond/vlc-android
  • andresbott/vlc-android
  • yolandawanttoplay/vlc-android
  • lapaz17/vlc-android
  • sillyearl0138/vlc-android
  • NF-Repo/vlc-android
  • aaasg4001/vlc-android
  • mongia.puneet/vlc-android
  • slablaykon/vlc-android
  • Shabgardtanha1111/vlc-android
  • Benjamin_Loison/vlc-android
  • ashishami2002/vlc-android
  • Niram7777/vlc-android
  • Yashraj254/vlc-android
  • Choucroute_melba/vlc-android
  • Soete/vlc-android
  • MangalK/vlc-android
  • mohak2003/vlc-android
  • advait-0/vlc-android
  • McLP/vlc-android
  • fhuber/vlc-android
  • sami-sweng/vlc-android
  • josiahcarlson/vlc-android
  • mzych/vlc-android
  • amarradi/vlc-android
330 results
Show changes
Commits on Source (5801)
Showing
with 758 additions and 739 deletions
android-headers/* linguist-vendored
# VLC
/libvlcjni
/vlc/
/toolchains/
application/app/src/main/assets/
#medialibrary
medialibrary/medialibrary
......@@ -10,6 +13,10 @@ medialibrary/build
medialibrary/jni/obj
medialibrary/jni/libs
medialibrary/.libs
medialibrary/prefix
# Remote access
remoteaccess/**
# Android .so
/android-libs/**/*.so
......@@ -67,3 +74,4 @@ libvlc.pc
libvlc.pc.backup
libvlcpp.pc
lib/
/buildsystem/automation/certificates/
cache:
paths:
- .gradle/
- gradle-5.1.1/
- gradle/
- gradlew
.build-all-base:
image: registry.videolan.org:5000/vlc-debian-android:20190507015459
tags:
- debian
- android
stage: build
script:
- ./compile.sh ${EXTRA_BUILD_PARAM} -a ${ARCH}
variables:
MAKEFLAGS: -j8
# Rebuilds libvlc JNI
.build-libvlc-base:
extends: .build-all-base
only:
refs:
- master
- merge_requests
changes:
- libvlc/*
- build-common
- compile.sh
- compile-libvlc.sh
except:
- schedules
variables:
EXTRA_BUILD_PARAM: -l
# rebuild the medialibrary JNI component
# This implies rebuilding VLC beforehand
.build-ml-base:
extends: .build-all-base
only:
refs:
- master
- merge_requests
changes:
- medialibrary/*
- compile.sh
- build-common
- compile-libvlc.sh
- compile-medialibrary.sh
except:
- schedules
variables:
EXTRA_BUILD_PARAM: -ml
# vlc-android app only: don't rebuild everything but use a published artifact
continuous-app-build:
extends: .build-all-base
script:
- ./compile.sh --init
- ./gradlew assembleDebug
only:
refs:
- master
- merge_requests
changes:
- vlc-android/**/*
- assets/**/*
- .gitlab-ci.yml
except:
- schedules
#################################
# Template config instantiation #
#################################
build-libvlc-arm64:
extends: .build-libvlc-base
variables:
ARCH: arm64
build-libvlc-armv7:
extends: .build-libvlc-base
variables:
ARCH: arm
build-libvlc-x86:
extends: .build-libvlc-base
variables:
ARCH: x86
build-libvlc-x86_64:
extends: .build-libvlc-base
variables:
ARCH: x86_64
build-ml-arm64:
extends: .build-ml-base
variables:
ARCH: arm64
build-ml-armv7:
extends: .build-ml-base
variables:
ARCH: arm
build-ml-x86:
extends: .build-ml-base
variables:
ARCH: x86
build-ml-x86_64:
extends: .build-ml-base
variables:
ARCH: x86_64
# Nightly builds: build native & app code, and ship the APK as artifact
nightly-arm64:
extends: .build-all-base
only:
- schedules
variables:
ARCH: arm64
artifacts:
paths:
- vlc-android/build/outputs/apk/dev/VLC-Android-*.apk
expire_in: 2 weeks
nightly-armv7:
extends: .build-all-base
only:
- schedules
variables:
ARCH: arm
artifacts:
paths:
- vlc-android/build/outputs/apk/dev/VLC-Android-*.apk
expire_in: 2 weeks
nightly-x86:
extends: .build-all-base
only:
- schedules
variables:
ARCH: x86
artifacts:
paths:
- vlc-android/build/outputs/apk/dev/VLC-Android-*.apk
expire_in: 2 weeks
nightly-x86_64:
extends: .build-all-base
only:
- schedules
variables:
ARCH: x86_64
artifacts:
paths:
- vlc-android/build/outputs/apk/dev/VLC-Android-*.apk
expire_in: 2 weeks
<!---
/!\ Read this first!/!\
This default template purpose is to be used to report a bug you found in VLC for Android.
To use a different template, select it from the "Description" drop-down above. If you're having trouble finding it, see https://code.videolan.org/videolan/vlc-android/-/wikis/Create-an-issue-and-use-a-template.
If you want to ask for a new feature, please use the "VLC for Android - Feature Request.md" template above.
If you're a libvlc java developer, please use the "libvlc - Bug" template.
If you just want to ask questions on how to use VLC for Android, please use our forum at https://forum.videolan.org/viewforum.php?f=35
Please note that any ticket not using a template may be closed without notice as it won't provide the necessary information.
-->
<!--- Provide a general summary of the issue in the Title above -->
## Description
<!--- Describe your bug in detail -->
#### Expected behavior
#### Actual behavior
#### Steps to reproduce
1.
2.
3.
#### Screenshot / video
<!--Add a screenshot or screencast when applicable-->
<!--To take a screenshot, see https://support.google.com/android/answer/9075928?hl=en-->
## Context
#### App version
<!--You can find it in the About screen of the app-->
#### Android version
#### Device model
#### App mode
<!--Remove the useless modes-->
**Smartphone**
**TV**
**Auto**
\ No newline at end of file
<!--- Provide a general summary of the issue in the Title above -->
## Description
<!--- Describe your bug in detail -->
#### Expected behavior
#### Actual behavior
#### Steps to reproduce
1.
2.
3.
#### Code you used
```Your code here```
#### Screenshot / video
<!--Add a screenshot or screencast when applicable-->
<!--To take a screenshot, see https://support.google.com/android/answer/9075928?hl=en-->
## Context
#### libvlc version
<!--You can find it in the About screen of the app-->
#### Android version
#### Device model
......@@ -7,3 +7,9 @@ Marián Hikaník <mhikanik@users.sourceforge.net> Marian Hikanik <podnety@mojepr
<etix@videolan.org> <etix@l0cal.com>
<funman@videolan.org> <rafael.carre@gmail.com>
<funman@videolan.org> <rafael.carre@savoirfairelinux.com>
<hugo@beauzee.fr> <beauze.h@gmail.com>
<hugo@beauzee.fr> <hugo@videolan.org>
<nicolas@videolabs.io> <nicolas.pomepuy@gmail.com>
<geoffrey.metais@gmail.com> <geoffrey@videolan.org>
<thomas@gllm.fr> <tom@gllm.fr>
<rom1v@videolabs.io> <rom@rom1v.com>
[main]
host = https://app.transifex.com
[o:yaron:p:vlc-trans:r:android]
file_filter = application/resources/src/main/res/values-<lang>/strings.xml
source_file = application/resources/src/main/res/values/strings.xml
type = ANDROID
minimum_perc = 50
resource_name = android
replace_edited_strings = false
keep_translations = false
lang_map = zh_CN: zh-rCN, zh_TW: zh-rTW, zgh: zgh-rMA, en_GB: en-rGB, es_MX: es-rMX, pt_BR: pt-rBR, pt_PT: pt
[o:yaron:p:vlc-trans:r:android_store]
file_filter = buildsystem/automation/framing/locale/<lang>.po
source_file = buildsystem/automation/framing/locale/en.po
type = PO
minimum_perc = 100
resource_name = android (Store screenshots)
replace_edited_strings = false
keep_translations = false
\ No newline at end of file
Changes between 3.6.4 Beta 2 and 3.6.4 Beta 3:
------------------
* New bookmark navigation
* Fix the resume behavior
* TV audio player improvements
* Crash and behavior fixes
Changes between 3.6.4 Beta 1 and 3.6.4 Beta 2:
------------------
* Fix a permission issue
* Add a confirmation when overwriting playlists
Changes between 3.6.3 and 3.6.4 Beta 1:
------------------
* Improve the playback speed feature
* Subtitle download fixes
* Fix some permission issues
* Widget state improvement
* UI and crash fixes
Changes between 3.6.2 and 3.6.3:
------------------
* Fix SMB navigation
* Cast only audio setting
* Behavior and crash fixes
Changes between 3.6.1 and 3.6.2:
------------------
* Update the remote access dependency to fix a crash loop
* Fix a bug making the video played twice
Changes between 3.6.0 and 3.6.1:
------------------
* Behavior and crash fixes
Changes between 3.6.0 Beta 6 and 3.6.0:
------------------
* Improve the orientation user experience in the video player
* Behavior and crash fixes
Changes between 3.6.0 Beta 5 and 3.6.0 Beta 6:
------------------
* Fix the remote access not included in the app bundle
Changes between 3.6.0 Beta 4 and 3.6.0 Beta 5:
------------------
* Allow deleting files on TV
* Multiple remote access improvements
* Fix 360 videos
* Behavior and UI fixes
* Crash fixes
Changes between 3.6.0 Beta 3 and 3.6.0 Beta 4:
------------------
* Fix subtitles download
* Improve the permission management
* Allow renaming a playlist
* Fix some language issues
* Behavior and UI fixes
* Crash fixes
Changes between 3.6.0 Beta 2 and 3.6.0 Beta 3:
------------------
* Fix custom PiP
* UI fixes
* Crash fixes
Changes between 3.5.7 and 3.6.0 Beta 2:
------------------
* Remote access: take control of your VLC for Android from any device
* Favorite any media and filter your medialibrary content by favorite
* Video player: tap to fast play
* Warning for metered connections
* PiP improvements
* Audio player chapter navigation
* UI improvements
* Crash fixes
Changes between 3.5.6 and 3.5.7:
------------------
* Fix crash when downloading subtitles
Changes between 3.5.5 and 3.5.6:
------------------
* Fix crash on startup
Changes between 3.5.4 and 3.5.5:
------------------
* Target Android 34
* This release is empty. Its sole purpose is to unlock the Play Store releases
Changes between 3.5.4 Beta 2 and 3.5.4:
------------------
* Fix media controls not working after some time on Android 13
* Fix audio notification icon transparency
* Minor interface fixes
* Crash fixes
Changes between 3.5.4 Beta 1 and 3.5.4 Beta 2:
------------------
* Re-allow access to the media controls for third party apps
* Fix some Android Auto and Android TV behaviors
* Crash fixes
Changes between 3.5.3 and 3.5.4 Beta 1:
------------------
* Improve the video resolution text
* Fix opening from other apps
* Bluetooth fixes
Changes between 3.5.3 Beta 2 and 3.5.3:
------------------
* Fix permission check on Android 12
Changes between 3.5.3 Beta 1 and 3.5.3 Beta 2:
------------------
* Fix the video playlist mode on TV
* Minor graphical fixes and improvements
Changes between 3.5.2 and 3.5.3 Beta 1:
------------------
* More subtitle settings
* New notification permission
* Fix the sorting in the file browser
* Allow forcing shuffle for audio playbacks
* TV allow mixing folders and files
* Minor graphical fixes and improvements
* Crash fixes
Changes between 3.5.1 and 3.5.2:
------------------
* Fix UPnP/DLNA discovery
* Widget fixes and improvements
* Improve the history settings
* Improve the screenshot feature
* Minor graphical improvements
* Fix some playback issues
* Fix some thumbnail generation issues
* Crash fixes
Changes between 3.5.1 Beta 1 and 3.5.1:
------------------
* Fix UPnP/DLNA files listing
* Fix empty notification icons on Android 4
* Increase the video controls delay when hitting play
* Crash fixes
Changes between 3.5.0 and 3.5.1 Beta 1:
------------------
* Take a screenshot of your video
* Widgets improvements
* UPnP client fixes
* Playback fixes
* UI fixes
* Crash fixes
Changes between 3.5.0 RC 1 and 3.5.0:
------------------
* Improve the layout for foldable devices
* Fix some sorting issues
* Improve the PiP permission management
* UI fixes
* Android Auto improvements
* Some SMB fixes
* Crash fixes
Changes between 3.5.0 Beta 7 and 3.5.0 RC 1:
------------------
* Greatly improve the accessibility
* Improve the first app launch
* Improve the File browser
* Material You icon
* Some UI fixes
* Improve the video player performances
* Crash fixes
Changes between 3.5.0 Beta 6 and 3.5.0 Beta 7:
------------------
* Crash fixes
Changes between 3.5.0 Beta 5 and 3.5.0 Beta 6:
------------------
* New widgets. Now fully customizable!
* New album details screen
* Video player performance improvements
* Improve and fix media progress saving
* Minor UI fixes and improvements
* Crash fixes
Changes between 3.5.0 Beta 4 and 3.5.0 Beta 5:
------------------
* UI improvements
* Crash fixes
* Codebase cleanups
Changes between 3.5.0 Beta 3 and 3.5.0 Beta 4:
------------------
* Foldable devices support for the video player
* New option to add a media shortcut to the launcher
* Browse playlists on Android TV
* Allow picking files from SAF when no permission is granted
* New setting for replay gain
* Support for vgm files added
* History fixes for streams
* UI improvements
* Crash fixes
Changes between 3.5.0 Beta 2 and 3.5.0 Beta 3:
------------------
* Ui and media library fixes
Changes between 3.5.0 Beta 1 and 3.5.0 Beta 2:
------------------
* Playlist can now be searched
* Prevent losing progress on app crash
* Graphical fixes
* Crash fixes
Changes between 3.4.4 and 3.5.0 Beta 1:
------------------
* Network indexation is now stable
* New dedicated tablet UI
* New video controls settings screen allowing more customization
* Revamped about screen and audio list
* Small visual improvements in the audio player
* Improved video ratio and notch management
* Improved keyboard shortcuts support
* A lot of visual and behavior fixes
Changes between 3.4.3 and 3.4.4:
------------------
* Fix a crash on null medias
Changes between 3.4.3 Beta 6 and 3.4.3:
------------------
* Fix some rare crashes on the Sony Bravia devices
* Other crash fixes
Changes between 3.4.3 Beta 5 and 3.4.3 Beta 6:
------------------
* Fix the grid/list button state
* Crash fixes
Changes between 3.4.3 Beta 4 and 3.4.3 Beta 5:
------------------
* Fix the subtitles not working on some Android 12 devices
* Fix some graphical issues
* Crash fixes
Changes between 3.4.3 Beta 3 and 3.4.3 Beta 4:
------------------
* Remove donations
Changes between 3.4.3 Beta 2 and 3.4.3 Beta 3:
------------------
* Use the new file permission
* Crash fixes
Changes between 3.4.3 Beta 1 and 3.4.3 Beta 2:
------------------
* Translation update
* Crash fixes
Changes between 3.4.2 and 3.4.3 Beta 1:
------------------
* Crash fixes
Changes between 3.4.1 and 3.4.2:
------------------
* Fix loading of media when opening the app
* Crash fixes
Changes between 3.4.0 Beta 3 and 3.4.1:
------------------
* Playback fix for TV
Changes between 3.4.0 Beta 2 and 3.4.1 Beta 3:
------------------
* Playback fixes
* Crash fixes
Changes between 3.4.0 Beta 1 and 3.4.1 Beta 2:
------------------
* Crash fixes
Changes between 3.4.0 and 3.4.1 Beta 1:
------------------
* Android auto: better covers
* Android auto: +/- 10 seconds quick seek
* Crash fixes
Changes between 3.4.0 RC 2 and 3.4.0:
------------------
* UI fixes
Changes between 3.4.0 Beta 6 and 3.4.0 RC 1:
------------------
* Better media seeking
* Bug and crash fixes
Changes between 3.4.0 Beta 5 and 3.4.0 Beta 6:
------------------
* Allow seeing the tips again
* Bug and crash fixes
Changes between 3.4.0 Beta 4 and 3.4.0 Beta 5:
------------------
* Shuffle mode improved
* Bug and crash fixes
Changes between 3.4.0 Beta 3 and 3.4.0 Beta 4:
------------------
* Improve the audio player design
* Improve the player tips
* Bug and crash fixes
Changes between 3.4.0 Beta 2 and 3.4.0 Beta 3:
------------------
* Bug fixes
Changes between 3.4.0 Beta 1 and 3.4.0 Beta 2:
------------------
* New onboarding
* Allow using the app without the storage permission
* medialibrary and playback improvements
Changes between 3.3.4 and 3.4.0 Beta 1:
------------------
* Add bookmarks in your medias
* New audio player design
* New video list design
* Network and playback improvements
* A lot of bug fixes and improvements
Changes between 3.3.4 Beta 1 and 3.3.4:
------------------
* Allow sorting albums by artist
* Improve chromecast
* Fix Video track options focus
Changes between 3.3.3 and 3.3.4 Beta 1:
------------------
* Fix some RTL issues
* Improve playback resume
* Persist audio player time mode
* Crash fixes
Changes between 3.3.3 Beta 4 and 3.3.3:
------------------
* Fix scrolling issues
* Fix media not updated during a scan
* Fix the action button visibility
* Improve descriptions for Android Auto and streams
* Crash fixes
Changes between 3.3.3 Beta 3 and 3.3.3 Beta 4:
------------------
* Global audio delay for videos
* Addition of an option to browse the folder of a media
* TV : improve DPAD input in video player
* Improve descriptions for Android Auto and streams
* Fix default orientation for videos
* Allow favorites for UPNP servers
* A lot of UI fixes
* Crash fixes
Changes between 3.3.2 and 3.3.3 Beta 3:
------------------
* Remove a single media from history
* Android TV: fixes and improvements
* Fix audio thumbnails detection
* Fix DVD menu
* Update medialibrary
* Crash fixes
Changes between 3.3.2 Beta 4 and 3.3.2:
------------------
none
Changes between 3.3.2 Beta 3 and 3.3.2 Beta 4:
------------------
Application:
* SMB fixes
* Crash fixes
Changes between 3.3.2 Beta 2 and 3.3.2 Beta 3:
------------------
Application:
* Android Auto new navigation
* Samba network fixes
* Video group improvements
* Fix playlist items remove
* Crash fixes
Changes between 3.3.2 Beta 1 and 3.3.2 Beta 2:
------------------
Application:
* Video player: fix focus issue
* Video group improvements
* SMB fixes
* Android Auto improvements
* Fix picking subtitles for network videos
* Fix OTG
* Crash fixes
Changes between 3.3.1 and 3.3.2 Beta 1:
------------------
Application:
* Allow adding multiple videos to a new group
* SMB fixes
* Fix landscape video orientation
* Fix progression save
* Fix subtitles picking on SD cards
* Android Auto improvements and fixes
* Crash fixes
Changes between 3.3.1 Beta 2 and 3.3.1:
------------------
Application:
* Crash fixes
Changes between 3.3.1 Beta 1 and 3.3.1 Beta 2:
------------------
Application:
* Crash fixes
Changes between 3.3.0 and 3.3.1 Beta 1:
------------------
Application:
* Video: mark as played
* Audio: chapter selection for audio books
* TV: improve PiP behavior
* Video player: increase icons' size
* Thumbnails: fix quality issue
* Crash fixes
Changes between 3.3.0-RC4 and 3.3.0:
------------------
Application:
* Fix streaming issues
* Bug fixes
Changes between 3.3.0-RC3 and 3.3.0-RC4:
------------------
Application:
* Prevent unwanted notifications
* Fix some streams not playing
* Fix midi not considered as audio media
* Some UI fixes
Changes between 3.3.0-beta-07 and 3.3.0-RC1:
------------------
Application:
* Sponsorship added. You can now support VLC Android!
* New UI for subtitles download
* New UI for subtitles picker
Changes between 3.3.0-beta-06 and 3.3.0-beta-07:
------------------
Application:
* New Video Player UI
* UI fixes in the file browser
* Crash fixes
Changes between 3.3.0-beta-04 and 3.3.0-beta-05:
------------------
Application:
* Behavior improvements
* Crash fixes
Changes between 3.3.0-beta-01 and 3.3.0-beta-02:
------------------
Application:
* A lot of fixes
Changes between 3.2 and 3.3.0-beta-01:
------------------
Application:
* Major Ui redesign
* Share a video
* Video stats
Changes between 3.1.7 and 3.2.0-beta-01:
------------------
Application:
* UI redesign, including player and TV browsers
* ViewModel layer refactoring
* Subtitles are now saved in the media folder when possible
Changes between 3.1.0-RC1 and 3.1.0-RC2:
------------------
......
# VLC for Android
This is the official **Android** port of [VLC](https://videolan.org/vlc/).
VLC on Android plays all the same files as the classical version of VLC, and features a media database
for Audio and Video files and stream.
- [Project Structure](#project-structure)
- [LibVLC](#libvlc)
- [License](#license)
- [Build](#build)
- [Build Application](#build-application)
- [Build LibVLC](#build-libvlc)
- [Contribute](#contribute)
- [Pull requests](#pull-requests)
- [Translations](#translations)
- [Issues and feature requests](#issues-and-feature-requests)
- [Support](#support)
## Project Structure
Here are the current folders of vlc-android project:
- extension-api : Application extensions SDK (not released yet)
- application : Android application source code, organized by modules.
- buildsystem : Build scripts, CI and maven publication configuration
- libvlc : LibVLC gradle module, VLC source code will be cloned in `vlc/` at root level.
- medialibrary : Medialibrary gradle module
## LibVLC
LibVLC is the Android library embedding VLC engine, which provides a lot of multimedia features, like:
- Play every media file formats, every codec and every streaming protocols
- Hardware and efficient decoding on every platform, up to 8K
- Network browsing for distant filesystems (SMB, FTP, SFTP, NFS...) and servers (UPnP, DLNA)
- Playback of Audio CD, DVD and Bluray with menu navigation
- Support for HDR, including tonemapping for SDR streams
- Audio passthrough with SPDIF and HDMI, including for Audio HD codecs, like DD+, TrueHD or DTS-HD
- Support for video and audio filters
- Support for 360 video and 3D audio playback, including Ambisonics
- Ability to cast and stream to distant renderers, like Chromecast and UPnP renderers.
And more.
![LibVLC stack](https://images.videolan.org/images/libvlc_stack.png)
You can use our LibVLC module to power your own Android media player.
Download the `.aar` directly from [Maven](https://search.maven.org/artifact/org.videolan.android/libvlc-all) or build from source.
Have a look at our [sample codes](https://code.videolan.org/videolan/libvlc-android-samples).
## License
VLC for Android is licensed under GPLv2 (or later). Android libraries makes this, de facto, a GPLv3 application.
VLC engine *(libvlc)* for Android is licensed under LGPL.
VLC for Android is licensed under [GPLv2 (or later)](COPYING). Android libraries make this, de facto, a GPLv3 application.
VLC engine *(LibVLC)* for Android is licensed under [LGPLv2](libvlc/COPYING.LIB).
## Build
Native libraries are published on bintray. So you can:
- Build the application and get libraries via gradle dependencies (JVM build only)
- Build the whole app (LibVLC + Medialibrary + Application)
- Build LibVLC only, and get an .aar package
### Build Application
VLC-Android build relies on gradle build modes :
- `Release` & `Debug` will get LibVLC and Medialibrary from Bintray, and build application source code only.
- `SignedRelease` also, but it will allow you to sign application apk with a local keystore.
- `Dev` will build build LibVLC, Medialibrary, and then build the application with these binaries. (via build scripts only)
### Build LibVLC
You will need a recent Linux distribution to build VLC.
It should work with Windows 10, and macOS, but there is no official support for this.
Check our [AndroidCompile wiki page](https://wiki.videolan.org/AndroidCompile/)
#### Setup
Check our [AndroidCompile wiki page](https://wiki.videolan.org/AndroidCompile/), especially for build dependencies.
Here are the essential points:
On Debian/Ubuntu, install the required dependencies:
```bash
sudo apt install automake ant autopoint cmake build-essential libtool-bin \
patch pkg-config protobuf-compiler ragel subversion unzip git \
openjdk-8-jre openjdk-8-jdk flex python wget
```
Setup the build environment:
Set `$ANDROID_SDK` to point to your Android SDK directory
`export ANDROID_SDK=/path/to/android-sdk`
Set `$ANDROID_NDK` to point to your Android NDK directory
`export ANDROID_NDK=/path/to/android-ndk`
Then, you are ready to build!
#### Build
`buildsystem/compile.sh -l -a <ABI>`
ABI can be `arm`, `arm64`, `x86`, `x86_64` or `all` for a multi-abis build
You can do a library release build with `-r` argument
#### Medialibrary
Build Medialibrary with `-ml` instead of `-l`
## Contribute
VLC is a libre and open source project, we welcome all contributions.
Just respect our [Code of Conduct](https://wiki.videolan.org/CoC/).
Just respect our [Code of Conduct](https://wiki.videolan.org/CoC/), and if you want do contribute to the UI or add a new feature, please open an issue first so there can be a discussion about it.
### Pull requests
Pull requests can be proposed here or on our [github mirror](https://github.com/videolan/vlc-android).
Pull requests must be proposed on our [gitlab server](https://code.videolan.org/videolan/vlc-android/).
So you must create an account, fork vlc-android project, and propose your merge requests from it.
**Except for translations**, see the section below.
### Translations
### Sending patches to the mailing list
You can help improving translations too by joining the [transifex vlc project](https://www.transifex.com/yaron/vlc-trans/dashboard/)
Check [our wiki page on how to send patches](https://wiki.videolan.org/Sending_Patches_VLC/)
Send them to the android mailing list: android@videolan.org, not vlc-devel.
Translations merge requests are then generated from transifex work.
## Issues and feature requests
VLC for Android bugtracker is hosted on [VideoLAN gitlab](https://code.videolan.org/videolan/vlc-android/issues)
Please look for existing issues and provide as much useful details as you can (e.g. vlc app version, device and Android version)
VLC for Android bugtracker is hosted on [VideoLAN gitlab](https://code.videolan.org/videolan/vlc-android/issues)
Please look for existing issues and provide as much useful details as you can (e.g. vlc app version, device and Android version).
### Translations:
You can help improving translations too by joining the [transifex vlc project](https://www.transifex.com/yaron/vlc-trans/dashboard/)
A template is provided, please use it!
## LibVLC
You can use our LibVLC module to power your own Android media player.
Have a look at our [sample codes](https://code.videolan.org/videolan/libvlc-android-samples).
Issues without relevant information will be ignored, we cannot help in this case.
## support
## Support
- For usage support, use the in-app feedback option in the `About` screen
- Android mailing list: android@videolan.org
- bugtracker: https://code.videolan.org/videolan/vlc-android/issues
- IRC: *#videolan* channel on [freenode](http://freenode.net/)
- VideoLAN forum: https://forum.videolan.org/
- G+ community: https://plus.google.com/u/0/communities/113615952107012455563
- IRC: *#videolan* channel on [libera](https://libera.chat/)
- VideoLAN forum: https://forum.videolan.org/viewforum.php?f=35
/*
* *************************************************************************
* build.gradle.java
* **************************************************************************
* Copyright © 2015 VLC authors and VideoLAN
* Author: Geoffrey Métais
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
* ***************************************************************************
*/
apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
ext {
library_version = '0.1'
repoName = 'Android'
libraryName = 'VLC-API'
desc = 'SDK for VLC-Android extensions'
lib_artifact = 'vlc-extensions'
libraryDescription = 'SDK for VLC-Android extensions'
}
android {
compileSdkVersion rootProject.ext.compileSdkVersion
defaultConfig {
versionCode 1
versionName "1.0"
minSdkVersion rootProject.ext.minSdkVersion
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
api "androidx.appcompat:appcompat:$rootProject.ext.androidxAppcompatVersion"
testImplementation "junit:junit:$rootProject.ext.junitVersion"
}
apply from: '../publish.gradle'
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /home/dekans/SDK/android-sdk-linux/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
/*
* *************************************************************************
* ApplicationTest.java
* **************************************************************************
* Copyright © 2015 VLC authors and VideoLAN
* Author: Geoffrey Métais
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
* ***************************************************************************
*/
package org.videolan.vlc.extensions.api;
import android.app.Application;
import android.test.ApplicationTestCase;
/**
* <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
*/
public class ApplicationTest extends ApplicationTestCase<Application> {
public ApplicationTest() {
super(Application.class);
}
}
\ No newline at end of file
<!--
~ **************************************************************************
~ AndroidManifest.xml.java
~ ***************************************************************************
~ Copyright © 2015 VLC authors and VideoLAN
~ Author: Geoffrey Métais
~
~ This program is free software; you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation; either version 2 of the License, or
~ (at your option) any later version.
~
~ This program is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with this program; if not, write to the Free Software
~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
~ ***************************************************************************
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.videolan.vlc.plugin.api">
<application android:label="@string/app_name"
android:supportsRtl="true">
<activity android:name="org.videolan.vlc.extensions.api.WarningActivity"
android:theme="@style/TransparentTheme" />
</application>
</manifest>
package org.videolan.vlc.extensions.api;
import org.videolan.vlc.extensions.api.VLCExtensionItem;
import android.net.Uri;
interface IExtensionHost {
// Protocol version 1
oneway void updateList(in String title, in List<VLCExtensionItem> items, boolean showParams, boolean isRefresh);
oneway void playUri(in Uri uri, String title);
oneway void unBind(int index);
}
package org.videolan.vlc.extensions.api;
import org.videolan.vlc.extensions.api.IExtensionHost;
import org.videolan.vlc.extensions.api.VLCExtensionItem;
interface IExtensionService {
// Protocol version 1
oneway void onInitialize(int index, in IExtensionHost host);
oneway void browse(String stringId);
oneway void refresh();
}
package org.videolan.vlc.extensions.api;
parcelable VLCExtensionItem;
/*
* *************************************************************************
* VLCExtensionItem.java
* **************************************************************************
* Copyright © 2015 VLC authors and VideoLAN
* Author: Geoffrey Métais
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
* ***************************************************************************
*/
package org.videolan.vlc.extensions.api;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
/**
* A parcelable, serializable object containing information about medium to be sent to VLC
* for browsing of playback
*
* <p>
* This class follows the <a href="http://en.wikipedia.org/wiki/Fluent_interface">fluent
* interface</a> style, using method chaining to provide for more readable code. For example, to set
* the title and link of this data, use {@link #setTitle(String)} and {@link #setLink(String)}
* methods like so:
*
* <pre class="prettyprint">
* VLCExtensionItem data = new VLCExtensionItem(id, null)
* .setTitle("My Video")
* .setLink("http://mysite.net/myvideo.ogv");
* </pre>
*
*/
public class VLCExtensionItem implements Parcelable {
/**
* Item type to show it as a directory in VLC browser
*/
public static final int TYPE_DIRECTORY = 0;
/**
* Item type to show it as a video medium in VLC browser
*/
public static final int TYPE_VIDEO = 1;
/**
* Item type to show it as an audio medium in VLC browser
*/
public static final int TYPE_AUDIO = 2;
/**
* Item type to show it as a playlist item in VLC browser
*/
public static final int TYPE_PLAYLIST = 3;
/**
* Item type to show it as a subtitle file in VLC browser
*/
public static final int TYPE_SUBTITLE = 4;
/**
* Unknown type, VLC will guess from its {#link link} or title
*/
public static final int TYPE_OTHER_FILE = 5;
public String stringId;
public String link;
public String title;
public String subTitle;
public Uri imageUri; // for content provider
public int type; // Using VLC icons. maybe with iconRes?
/**
* Simple constructor, with only ids.
* You have to provide a String or int id for browsable elements (with type #TYPE_DIRECTORY)
*
* @param stringId The String to use as an ID, set to #null if you prefer to use the #intId
*/
public VLCExtensionItem(String stringId) {
this.stringId = stringId;
}
public VLCExtensionItem() {}
private VLCExtensionItem(Parcel in) {
readFromParcel(in);
}
/**
* Returns the subTitle of this item. e.g. media artist or album
*/
public String getSubTitle() {
return subTitle;
}
/**
* Sets the subTitles string of this item.
*
* @param subTitle The subTitle string to set.
*/
public VLCExtensionItem setSubTitle(String subTitle) {
this.subTitle = subTitle;
return this;
}
/**
* Returns the uri string of the {#link VLCExtensionItem} for playback or download
*/
public String getLink() {
return link;
}
/**
* Sets the uri String of the {#link VLCExtensionItem}
*
* @param link The medium link.
*/
public VLCExtensionItem setLink(String link) {
this.link = link;
return this;
}
/**
* returns the {#link VLCExtensionItem} title
*/
public String getTitle() {
return title;
}
/**
* Sets the {#link VLCExtensionItem} title
*
* @param title The string to set as title.
*/
public VLCExtensionItem setTitle(String title) {
this.title = title;
return this;
}
/**
* Returns the {#link VLCExtensionItem} icon image link
*/
public Uri getImageUri() {
return imageUri;
}
/**
* Sets the uri string of the {#link VLCExtensionItem} icon image.
*
* @param imageUri The uri string to set.
*/
public VLCExtensionItem setImageUri(Uri imageUri) {
this.imageUri = imageUri;
return this;
}
/**
* Returns the {#link VLCExtensionItem} type
* @see {#link setType}.
*/
public int getType() {
return type;
}
/**
* Sets the type of the {#link VLCExtensionItem}
*
* @param type The type among {#link TYPE_DIRECTORY}, {#link TYPE_VIDEO},
* {#link TYPE_AUDIO} or {#link TYPE_OTHER_FILE}.
*/
public VLCExtensionItem setType(int type) {
this.type = type;
return this;
}
public static final Parcelable.Creator<VLCExtensionItem> CREATOR = new
Parcelable.Creator<VLCExtensionItem>() {
@Override
public VLCExtensionItem createFromParcel(Parcel in) {
return new VLCExtensionItem(in);
}
@Override
public VLCExtensionItem[] newArray(int size) {
return new VLCExtensionItem[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(stringId);
dest.writeString(link);
dest.writeString(title);
dest.writeString(subTitle);
dest.writeParcelable(imageUri, 0);
dest.writeInt(type);
}
public void readFromParcel(Parcel in) {
stringId = in.readString();
link = in.readString();
title = in.readString();
subTitle = in.readString();
imageUri = in.readParcelable(null);
type = in.readInt();
}
}
/**
* **************************************************************************
* VLCExtensionService.java
* ****************************************************************************
* Copyright © 2016 VLC authors and VideoLAN
* Author: Geoffrey Métais
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
* ***************************************************************************
*/
package org.videolan.vlc.extensions.api;
import android.app.Service;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.IBinder;
import android.os.Looper;
import android.os.RemoteException;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.List;
public abstract class VLCExtensionService extends Service{
private static final String TAG = "VLC/ExtensionService";
private int mIndex = -1;
private static final ComponentName VLC_HOST_SERVICE =
new ComponentName("org.videolan.vlc",
"org.videolan.vlc.plugin.PluginService");
IExtensionHost mHost;
Context mContext = this;
private volatile Looper mServiceLooper;
protected volatile Handler mServiceHandler;
/**
* Called by VLC when users wants to browse one of your {#link VLCExtensionItem.TYPE_DIRECTORY}
* VLC provides {#intId} and {#stringId} from chosen item
*
* @param stringId String id of the item to browse
*/
protected abstract void browse(@Nullable String stringId);
/**
* Called by VLC when user wants to refresh the current list displayed by the extension.
*/
protected abstract void refresh();
@Override
public void onCreate() {
super.onCreate();
HandlerThread thread = new HandlerThread(
"VLCExtension:" + getClass().getSimpleName());
thread.start();
mServiceLooper = thread.getLooper();
mServiceHandler = new Handler(mServiceLooper);
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
@Override
public void onDestroy() {
super.onDestroy();
try {
mHost.unBind(mIndex);
} catch (RemoteException e) {}
mServiceHandler.removeCallbacksAndMessages(null); // remove all callbacks
mServiceLooper.quit();
}
/**
* Starts playback of the given uri by VLC
*
* @param uri The uri to play
* @param title Optional - Set the media title to be displayed.
* Otherwise, it will be guessed from uri.
*/
public void playUri(@NonNull Uri uri, @Nullable String title) {
try {
mHost.playUri(uri, title);
} catch (RemoteException e) {
e.printStackTrace();
}
}
/**
* Displays given items in VLC browser.
*
* @param title The title shown in VLC action bar for this list display.
* @param items The items to show.
* @param showParams Wether you want to show the FAB to launch your extension settings activity.
*/
protected void updateList(String title, List<VLCExtensionItem> items, boolean showParams, boolean isrefresh){
try {
mHost.updateList(title, items, showParams, isrefresh);
} catch (RemoteException e) {
e.printStackTrace();
}
}
/**
* Called once VLC is binded to your service.
* Use it to call {@link #updateList(String, List, boolean, boolean)} with root level elements
* if you want VLC to handle your extension browsing.
*/
protected void onInitialize() {};
private final IExtensionService.Stub mBinder = new IExtensionService.Stub() {
@Override
public void onInitialize(int index, IExtensionHost host) throws RemoteException {
mIndex = index;
mHost = host;
mServiceHandler.post(new Runnable() {
@Override
public void run() {
VLCExtensionService.this.onInitialize();
}
});
}
@Override
public void browse(final String text) throws RemoteException {
mServiceHandler.post(new Runnable() {
@Override
public void run() {
VLCExtensionService.this.browse(text);
}
});
}
@Override
public void refresh() {
mServiceHandler.post(new Runnable() {
@Override
public void run() {
VLCExtensionService.this.refresh();
}
});
}
};
}