2011-09-26 5 views
0

Voici mon codeMediaPlay ne jouera pas de son, pourquoi?

MediaPlayer mp = new MediaPlayer(); 
... 
try { 
mp.setDataSource(getString(R.raw.click)); 
mp.prepare(); 
mp.start(); 
} catch (IllegalArgumentException e) { 
             e.printStackTrace(); 
} catch (IllegalStateException e) { 
             e.printStackTrace(); 
} catch (IOException e) { 
             e.printStackTrace(); 
} 

étrangement, il me donne

09-26 16:06:39.316: INFO/ActivityManager(110): Displayed Constructor.rob.com/.constr: +7s443ms 
09-26 16:06:40.445: INFO/StagefrightPlayer(76): setDataSource('res/raw/click.mp3') 
09-26 16:06:40.453: ERROR/MediaPlayer(21990): error (1, -2147483648) 
09-26 16:06:40.457: WARN/System.err(21990): java.io.IOException: Prepare failed.: status=0x1 

des idées ce qui pourrait être mal?

Merci!

Répondre

2

Essayez ceci:

mp= MediaPlayer.create(context, R.raw.click); 
mp.start(); 
+0

homme Merci, fonctionne! – Roger

+0

bienvenue, mais si vous jouez mediaPlayer en continu, alors ne l'utilisez pas, utilisez Soundpool pour jouer court mais beaucoup de clips sonores .., Lecture de l'objet mediaplayer en continu provoquera une erreur plus tard !! –

3

Ajoutez mp.reset() avant mp.setDataSource().

EDIT: Attendez, que faites-vous avec getString? Tu ne peux pas faire ça. Pour définir une source de données, vous avez besoin d'un fichier FileDescriptor. Essayez ceci:

AssetFileDescriptor afd = getAssets().openRawResourceFd(R.raw.click); 
mp.reset(); 
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); 
mp.prepare(); 
mp.start(); 
Questions connexes