Android MediaPlayer声音问题

时间:2011-07-10 05:15:50

标签: android media-player

我的应用程序中有40多个声音文件。在我的一项活动中,我想根据only one sound file附带的id(ID范围:1 - 50)播放Bundle b。我试过这个:

在onCreate()中:

    Bundle b = getIntent().getExtras();
    id = (int) b.getInt("id");
    tv.setText("id : "+id); // Just to make sure that I received a correct id
    setResourseId(id);
    mPlayer.start();

setResourceId():

public void setResourseId(int id) {
    switch(id) {
    case 1:     mPlayer = MediaPlayer.create(this, R.raw.sound1);
    case 2:     mPlayer = MediaPlayer.create(this, R.raw.sound2);
    case 3:     mPlayer = MediaPlayer.create(this, R.raw.sound3);
    case 4:     mPlayer = MediaPlayer.create(this, R.raw.sound4);
    case 5:     mPlayer = MediaPlayer.create(this, R.raw.sound5);
                               .
                               .
                               .
                               .
                               .
    default:    mPlayer = MediaPlayer.create(this, R.raw.sound0);
    }
}

然而,它总是播放sound0 file(默认值)!这似乎很奇怪,因为TextView tv 总是打印出正确的 id

-

任何解决方案?

1 个答案:

答案 0 :(得分:2)

当你使用switch时,你需要在每种情况下中断,否则下一行也将被执行,在你的情况下,每次都执行所有行,并且mPlayer的最后一次分配是{{1 }} 每一次。一个简短的修复 - 在每个案例后添加休息:

MediaPlayer.create(this, R.raw.sound2);

作为旁注 - 我会考虑使用一组id并避免这种长切换情况。