2011-06-21 3 views
3

J'utilise le RingtoneManager pour jouer des sons. Tout fonctionne bien quand je stocke des fichiers son (.mp3) dans les répertoires SD appropriés.Uri de fichiers dans les assets

Je trouve l'URI du fichier et je le donne à RingtoneManager à jouer.

sd_uri = Uri.parse("/sdcard/media/path/to/file"); 
Ringtone rt = RingtoneManager.getRingtone(getApplicationContext(), sd_uri); 
rt.play(); 

Vous vous demandez quoi faire en cas de tablettes qui ne sont pas livrées avec une carte SD. Mon idée est de stocker des fichiers audio dans res/raw ou res/assets dirs, mais contrairement à MediaPlayer qui accepte les identifiants de ressources, RingtoneManager ne veut qu'Uri. Comment obtenir l'Uri de fichiers dans res/raw ou res/assets dir? Idéalement, je voudrais utiliser res/raw, pour obtenir R.raw.* identifiant, ce qui pourrait être pratique.

Répondre

0

Ne pas coder le chemin en tant que /sdcard à la place Environment.getExternalStorageDirectory(). Cela supprimera la dépendance sur sdcard.

0

Dans ma demande, je fais référence à l'application res/actif fichier multimédia situé en utilisant URI comme:

private static final String PLACEHOLDER="file:///android_asset/sample_video.3gp"; 
+1

Cela ne fonctionnera que dans la même application; les autres applications n'ont pas accès aux fichiers du dossier assets, sauf si (je crois) vous écrivez un fournisseur de contenu personnalisé pour les rendre public. –

+0

C'est absolument vrai ... – barmaley

Questions connexes