Giter VIP home page Giter VIP logo

Comments (8)

hichamboushaba avatar hichamboushaba commented on July 4, 2024 1

If someone is looking for some workarounds for the MediaPlayer issue, the issue created by @Woren has some possible solutions, and I shared one additional workaround there too.

from compose-multiplatform.

terrakok avatar terrakok commented on July 4, 2024

It is the expected behavior, because the resource on the android side is located inside a jar archive. The Uri has the correct path but your player doesn't support files in jar archives.
You need to implement a data reading from jars.

from compose-multiplatform.

terrakok avatar terrakok commented on July 4, 2024

You could try something like: https://stackoverflow.com/questions/15055747/play-media-from-from-zip-file-without-unzipping

(I haven't check it.)

from compose-multiplatform.

egorikftp avatar egorikftp commented on July 4, 2024

I see in the code logic that for fonts we additionally check if file inside "assets"

image

is it possible to add option to store files on Android in assets folder? it will fix the issue
otherwise it make sharing files logic useless 🙁

from compose-multiplatform.

terrakok avatar terrakok commented on July 4, 2024

@egorikftp First of all, the font check is dirty hack I'd like to remove but it is impossible to create a font by a byte array on android.

sharing files

Files are not resources. Compose resources are part of UI.

There is no such thing as "assets" on the JVM platform. What you ask is a platform dependent solution. If you want to add file to android assets you may use the android assets folder.

from compose-multiplatform.

Woren avatar Woren commented on July 4, 2024

For anyone interested I've created issue in Media3/Exoplayer repository. I have almost same use case. More details there.

from compose-multiplatform.

terrakok avatar terrakok commented on July 4, 2024

is it possible to add option to store files on Android in assets folder?

BTW, there is a technical limitation for that: to read android assets users have to provide an android context. it will make the library API more complicated

from compose-multiplatform.

hichamboushaba avatar hichamboushaba commented on July 4, 2024

BTW, there is a technical limitation for that: to read android assets users have to provide an android context. it will make the library API more complicated

@terrakok I think there is still a valid use case for offering support for assets on the resources library, in addition to the reasons above (which are caused by the fact that usage of Jar resources is not common on Android), there have been some issues with the performance of Jar resources in Android (Per my testing, the performance of Jar resources has improved in recent Android versions, but they are still slower by 15% than assets or raw files).

To solve this issue without impacting the API, I think there are some approaches:

  1. Require passing Context for base functions, but make the common functions Composables, and make use of LocalContext.current in the Android implementations.
  2. Introduce a notion of PlatformContext in the library, and require the client apps to pass it in the APIs

What do you think about these ideas?

from compose-multiplatform.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.