[RESOLVIDO] Android não reproduz som - dispara excessão

Eu tenho um programa que deveria tocar um som quando eu aperto um botão, mas quando eu uso a classe que é responsavel para reproduzir o som ela não acha o arquivo!

Segue meu codigo:

//Aqui eu chamo a classe MediaPlayer q é responsável por tocar o som
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.som);
mediaPlayer.start();

Segue a minha classe R

public final class R {
    public static final class attr {
    }
    public static final class drawable {
        public static final int bt01=0x7f020000;
        public static final int bt02=0x7f020001;
    }
    public static final class id {
        public static final int TextView01=0x7f060000;
        public static final int imagem1=0x7f060001;
    }
    public static final class layout {
        public static final int main=0x7f030000;
    }
    public static final class raw {
        public static final int som=0x7f040000;
    }
    public static final class string {
        public static final int app_name=0x7f050000;
    }
}

Está aparentemente tudo certo, o arquivo esta na pasta res/raw/ e não sei porque ele não acha o arquivo, eu já procurei na internet e encontro exemplos do mesmo jeito que estou fazendo, mas nenhum funciona, sempre o mesmo erro. Já tentei tanto no Eclipse quanto no Netbeans!

Quando eu chamo o metodo create dispara a seguinte excessão:

12-31 22:31:17.060: WARN/System.err(5078): android.content.res.Resources$NotFoundException: File res/raw/som from drawable resource ID #0x7f040000
12-31 22:31:17.060: WARN/System.err(5078):     at android.content.res.Resources.openRawResourceFd(Resources.java:859)
12-31 22:31:17.070: WARN/System.err(5078):     at android.media.MediaPlayer.create(MediaPlayer.java:638)
12-31 22:31:17.070: WARN/System.err(5078):     at org.me.hmm.tela.FrmPrincipal.play(FrmPrincipal.java:58)
12-31 22:31:17.080: WARN/System.err(5078):     at org.me.hmm.tela.FrmPrincipal.onTouch(FrmPrincipal.java:51)
12-31 22:31:17.090: WARN/System.err(5078):     at android.view.View.dispatchTouchEvent(View.java:3706)
12-31 22:31:17.090: WARN/System.err(5078):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:885)
12-31 22:31:17.090: WARN/System.err(5078):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:885)
12-31 22:31:17.100: WARN/System.err(5078):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:885)
12-31 22:31:17.100: WARN/System.err(5078):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:885)
12-31 22:31:17.110: WARN/System.err(5078):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1712)
12-31 22:31:17.110: WARN/System.err(5078):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1116)
12-31 22:31:17.110: WARN/System.err(5078):     at android.app.Activity.dispatchTouchEvent(Activity.java:2142)
12-31 22:31:17.110: WARN/System.err(5078):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1696)
12-31 22:31:17.120: WARN/System.err(5078):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1738)
12-31 22:31:17.120: WARN/System.err(5078):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-31 22:31:17.120: WARN/System.err(5078):     at android.os.Looper.loop(Looper.java:130)
12-31 22:31:17.120: WARN/System.err(5078):     at android.app.ActivityThread.main(ActivityThread.java:4425)
12-31 22:31:17.120: WARN/System.err(5078):     at java.lang.reflect.Method.invokeNative(Native Method)
12-31 22:31:17.120: WARN/System.err(5078):     at java.lang.reflect.Method.invoke(Method.java:521)
12-31 22:31:17.120: WARN/System.err(5078):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
12-31 22:31:17.120: WARN/System.err(5078):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
12-31 22:31:17.120: WARN/System.err(5078):     at dalvik.system.NativeStart.main(Native Method)
12-31 22:31:17.120: WARN/System.err(5078): Caused by: java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed
12-31 22:31:17.130: WARN/System.err(5078):     at android.content.res.AssetManager.openNonAssetFdNative(Native Method)
12-31 22:31:17.130: WARN/System.err(5078):     at android.content.res.AssetManager.openNonAssetFd(AssetManager.java:410)
12-31 22:31:17.130: WARN/System.err(5078):     at android.content.res.Resources.openRawResourceFd(Resources.java:856)
12-31 22:31:17.130: WARN/System.err(5078):     ... 21 more

Att
Guilherme

Talvez ele esteja achando o arquivo, mas não consegue abrir.

Qual o formato do arquivo do som?

Veja essa mensagem:
Caused by: java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed

Tente outros arquivos de som e veja se funciona.

android.content.res.Resources$NotFoundException: File res/raw/som from drawable resource ID #0x7f040000 

Estranho “from drawable resource”

Faça um teste, abra o InputStream

InputStream stream = getResouces().openRawResource(R.raw.som);

E use esse stream para criar o player.

[quote=Java Player]Talvez ele esteja achando o arquivo, mas não consegue abrir.

Qual o formato do arquivo do som?

Veja essa mensagem:
Caused by: java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed

Tente outros arquivos de som e veja se funciona.[/quote]

É MP3.
Já tentei WAV e AMR.
Sem sucessos.

[quote=Marky.Vasconcelos] android.content.res.Resources$NotFoundException: File res/raw/som from drawable resource ID #0x7f040000

Estranho “from drawable resource”

Faça um teste, abra o InputStream

InputStream stream = getResouces().openRawResource(R.raw.som);

E use esse stream para criar o player.[/quote]

Eu até consigo pegar o inputStream, mas não consigo criar um MediaPlayer atravez dele. So consigo gerar atravéz de uma Uri ou um FileDescriptor, até porque já consegui reproduzir uma media do cartão de memoria. Acho que usando a Uri daria certo, mas ela é uma interface não sei como implementala, e não achei nada a respeito. O problema é que deveria dar certo passando resId

*** excluído por ter escrito sem ler antes a thread toda com atenção ***

Shame on me.

ps. já tentei dessa maneira tambem:

depois criar o player passando o fd mas nao consegui.

Alguem já conseguiu fazer? poderia mandar o trecho do codigo?

Funcionou.

Algumas coisas que eu fiz para funcionar:

usei mesmo codigo postado acima, sem segredos!

Obrigado pela ajuda.
Att.
Guilherme.