0

here's my code:

            String a = "R.raw."+b;//b  is a  user  input
            int toSpeak = Integer.parseInt(a);
            sound = MediaPlayer.create(trans.this, toSpeak);

            sound.start();
            sound.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {                          
            @Override
            public void onCompletion(MediaPlayer mp) {
                // TODO Auto-generated method stub
                sound.release();
                sound = null;
                }
            });

these are my errors:

02-09 05:54:44.998: W/dalvikvm(1392): threadid=1: thread exiting with uncaught exception (group=0xb4a38b90)

02-09 05:54:45.008: E/AndroidRuntime(1392): FATAL EXCEPTION: main

02-09 05:54:45.008: E/AndroidRuntime(1392): Process: com.translator.ite, PID: 1392

02-09 05:54:45.008: E/AndroidRuntime(1392): java.lang.NumberFormatException: Invalid int: "R.raw.abandon"

02-09 05:54:45.008: E/AndroidRuntime(1392):     at java.lang.Integer.invalidInt(Integer.java:137)

02-09 05:54:45.008: E/AndroidRuntime(1392):     at java.lang.Integer.parse(Integer.java:374)

02-09 05:54:45.008: E/AndroidRuntime(1392):     at java.lang.Integer.parseInt(Integer.java:365)

02-09 05:54:45.008: E/AndroidRuntime(1392):     at java.lang.Integer.parseInt(Integer.java:331)

02-09 05:54:45.008: E/AndroidRuntime(1392):     at com.translator.ite.trans$1.onClick(trans.java:60)

02-09 05:54:45.008: E/AndroidRuntime(1392):     at android.view.View.performClick(View.java:4424)

02-09 05:54:45.008: E/AndroidRuntime(1392):     at android.view.View$PerformClick.run(View.java:18383)

02-09 05:54:45.008: E/AndroidRuntime(1392):     at android.os.Handler.handleCallback(Handler.java:733)

02-09 05:54:45.008: E/AndroidRuntime(1392):     at android.os.Handler.dispatchMessage(Handler.java:95)

02-09 05:54:45.008: E/AndroidRuntime(1392):     at android.os.Looper.loop(Looper.java:137)

02-09 05:54:45.008: E/AndroidRuntime(1392):     at android.app.ActivityThread.main(ActivityThread.java:4998)

02-09 05:54:45.008: E/AndroidRuntime(1392):     at java.lang.reflect.Method.invokeNative(Native Method)

02-09 05:54:45.008: E/AndroidRuntime(1392):     at java.lang.reflect.Method.invoke(Method.java:515)

02-09 05:54:45.008: E/AndroidRuntime(1392):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)

02-09 05:54:45.008: E/AndroidRuntime(1392):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)

02-09 05:54:45.008: E/AndroidRuntime(1392):     at dalvik.system.NativeStart.main(Native Method)
Michele d'Amico
  • 22,111
  • 8
  • 69
  • 76
tjm
  • 15
  • 4
  • Check if the link works for you: http://stackoverflow.com/questions/9528238/playing-audio-file-from-sdcard – sUndeep Feb 09 '15 at 11:09
  • Welcome to stackoverflow! Your error is in plain sight: you're trying to parse "R.raw.abandon" as an integer number in the second line from the top of the code you posted. Even a real android like Lt. Cdr. Data can't tell you which integer number "R.raw.abandon" is supposed to be ;-) – bassim Feb 09 '15 at 11:15

2 Answers2

0

Use getIdentifier to get id of resource using name:

int toSpeak = getResources().getIdentifier("raw/"+b, null, getPackageName());
ρяσѕρєя K
  • 132,198
  • 53
  • 198
  • 213
0

I had that kind of error. My final code that works ok for me :

final MediaPlayer mPlayer;
mPlayer = MediaPlayer.create(getApplicationContext(), R.raw.primeste_inactiv);
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
mPlayer.start();
mPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
  mPlayer.reset();
  mPlayer.release();
                    }
                });

My code has an extra line :

mPlayer.reset();
Huliganul
  • 71
  • 1
  • 9