我最终使用Android MediaPlayer,并在网上寻找帮助。我有一个应用程序,它只播放存储在assets目录中的.mp3文件。这是我正在执行的代码(在三星Galaxy Note 4上):
mediaPlayer2 = new MediaPlayer();
AssetFileDescriptor afd;
try {
afd = getAssets().openFd("achievement.mp3");
mediaPlayer2.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(), afd.getLength());
mediaPlayer2.prepareAsync();
mediaPlayer2.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
} catch (Exception e) { e.printStackTrace();}
该文件不会播放,而是提供以下内容:
11-26 20:55:18.824 23555-23555/com.brainglove.iflbasic D/MediaPlayer: setSubtitleAnchor in MediaPlayer
11-26 20:55:18.824 23555-23555/com.brainglove.iflbasic V/MediaPlayer: invoke 68
11-26 20:55:18.834 23555-23555/com.brainglove.iflbasic V/MediaPlayer: getAudioStreamType
11-26 20:55:18.834 23555-23555/com.brainglove.iflbasic V/MediaPlayer-JNI: getAudioStreamType: 3 (streamtype)
11-26 20:55:18.834 23555-23555/com.brainglove.iflbasic V/MediaPlayer-JNI: start
11-26 20:55:18.834 23555-23555/com.brainglove.iflbasic V/MediaPlayer: start
11-26 20:55:18.834 23555-23555/com.brainglove.iflbasic W/DisplayListCanvas: DisplayListCanvas is started on unbinded RenderNode (without mOwningView)
11-26 20:55:18.874 23555-23567/com.brainglove.iflbasic V/MediaPlayer: message received msg=100, ext1=1, ext2=-19
11-26 20:55:18.874 23555-23567/com.brainglove.iflbasic E/MediaPlayer: error (1, -19)
11-26 20:55:18.874 23555-23567/com.brainglove.iflbasic V/MediaPlayer: callback application
11-26 20:55:18.874 23555-23567/com.brainglove.iflbasic V/MediaPlayer: back from callback
11-26 20:55:18.954 23555-23555/com.brainglove.iflbasic D/ViewRootImpl: MSG_RESIZED_REPORT: ci=Rect(0, 96 - 0, 0) vi=Rect(0, 96 - 0, 0) or=1
11-26 20:55:18.964 23555-23555/com.brainglove.iflbasic E/MediaPlayer: Error (1,-19)
我尝试过将文件放入raw并从那里启动。没有骰子。有什么想法吗?
答案 0 :(得分:0)
试试这个:
if(mp.isPlaying())
{
mp.stop();
}
try {
mp.reset();
AssetFileDescriptor afd;
afd = getAssets().openFd("AudioFile.mp3");
mp.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
mp.prepare();
mp.start();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
快乐的编码!!