Android mp3播放和错误(1,-19)

时间:2017-11-27 05:01:55

标签: android

我最终使用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并从那里启动。没有骰子。有什么想法吗?

1 个答案:

答案 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();
    }

快乐的编码!!