现在我正在使用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();
}
答案 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();