Android chemin vers la ressource à l'intérieur de paquet
J'ai essayé d'ajouter une vidéo chemin d'accès à un Android exemple de projet - MediaPlayerDemo
Je peux la lecture de la vidéo quand il est stocké dans la carte sd, le chemin est
"fichier:///sdcard/dcim/un.m4v"
Mais je ne peux pas lire la vidéo quand il est stocké dans res/drawable. le chemin est
"android.resource://" +ce.getPackageName () + "/" + R. drawable.un
Je peux lire l'id de la vidéo en mode debug, mais juste ne peut pas rejouer la vidéo.
Comment le résoudre?
MISES à jour
Merci pour la réponse, pour l'instant j'ai essayé:
- mettre la vidéo en actifs, définissez le chemin d'accès au fichier:///android_asset/un.m4v".
- mettre la vidéo en raw, définissez le chemin d'accès à
("android.resource://" +ce.getPackageName () + "/" + R. raw.a) ou ("android.resource://" +ce.getPackageName () + "/raw/a)
mais aucun d'eux ne peut la lecture de la vidéo.
Ma vidéo est de 1,8 Mo, importe-t-il?
- l'utilisation de cette façon, " Uri myUri = Uri.parse("android.resource://" + getPackageName() + "/" + R. drawable.a); videoHolder.setVideoURI(myUri);'
- mais bonne façon de mettre votre vidéo dans les actifs ou les premières dossier que Mayani ans.
- J'ai essayé plusieurs méthodes mais encore une setDataSourceFD a échoué: statut=0x80000000
- ok, alors poster votre code et journal?
Vous devez vous connecter pour publier un commentaire.
Créer un nouveau dossier avec le nom raw dans res dossier, s'il est déjà créé le laisser être. Copiez votre fichier vidéo lisible (par exemple, myvideo.mp4) à raw dossier. L'utilisation de code ci-dessous dans votre application.
J'ai testé, son travail pour moi. Si la vidéo est jouable à partir de sdcard alors seulement qu'il jouera à partir de matières de dossier, sinon il affichera une boîte de dialogue indique Ne peut pas lire la vidéo.
essayez-le et laissez-moi savoir ce qui s'est passé.
Pour info, drawable est pour stocker des icônes, des images, un drawable pour l'application. Ainsi, Vous pouvez mettre la même vidéo soit en
assets
ou dansraw
dossier.J'ai trouvé la solution, mais pas directement.
Tout d'abord, le fichier n'est pas trouvé le problème n'est pas le problème de chemin d'accès, c'est parce que le problème d'autorisation.
Pour le résoudre, beaucoup de gens suggèrent copier le fichier dans FileInputStream. Mais toujours impossible de trouver le fichier de problème.
Mais le Fichier peut être écrit à Inputstream. Cependant, setDataSource() de la classe de Mediaplayer ne pas acccept InpuStream. Par conséquent, besoin d'écrire l'Inputstream à un Fichier temp par BufferedOutputStream.
enfin, setDataSource(tempfile_path) sans erreur.
Cette question est très ancienne et toujours pas de réponse bien donc ici, je vais répondre.
Tout d'abord, ne pas mettre des vidéos dans le dossier assets. C'est une mauvaise pratique. Créez un autre dossier (de Préférence un nommé raw).
La deuxième chose, c'est que s'il vous plaît ne pas utiliser le format m4v. L'utilisation d'une vidéo mp4.
Voici le code à insérer une vidéo:
Espère que cela clarifie votre doute!