使用AssetFileDescriptor播放音频不起作用

时间:2014-07-14 01:16:18

标签: android audio android-mediaplayer

现在我正在使用AssetFileDescriptor处理音频播放器。但是这首歌(R.raw.music3)不会没有错误播放,我无法找出我做错了什么,请帮帮我。

private void playAudio_UsingDescriptor() throws Exception{
    AssetFileDescriptor fileDesc=getResources().openRawResourceFd(R.raw.music3);

        sound2=new MediaPlayer();
        sound2.setAudioStreamType(AudioManager.STREAM_MUSIC);
        sound2.setDataSource(fileDesc.getFileDescriptor());
        fileDesc.close();
        sound2.prepareAsync();
        sound2.start();

}
try {
     playAudio_UsingDescriptor();  
     }
     catch (Exception e){
                        sound2.start();
                        }

1 个答案:

答案 0 :(得分:3)

由于您已将音频文件放在/res/raw目录中,请尝试使用以下内容初始化MediaPlayer,而不是使用AssetFileDescriptor

sound2 = MediaPlayer.create(MainActivity.this, R.raw.music3);

MainActivity.this替换为适用的Context对象。

可替换地:

sound2 = new MediaPlayer();
AssetFileDescriptor afd = getResources().openRawResourceFd(R.raw.music3);

try
{           
    sound2.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
    afd.close();
    sound2.prepare();           
}
catch (IOException e)
{}

sound2.start();