首页 文章

MediaPlayer在从大块字节播放mp3时崩溃了吗?

提问于
浏览
1

我正在构建一个Android应用程序 . 应用程序功能是通过蓝牙将音频文件从一个设备传输到另一个设备 .

我正试图在媒体播放器中以块的形式播放文件 . 表示接收方以块的形式接收音频文件,播放此文件并将下一个块添加到现有文件中 .

我正在向另一台设备发送大块字节(音频文件)并在其中添加后续块 . 在接收方播放这些块 .

但问题是我的应用程序崩溃并收到此错误:

错误: MediaPlayer prepare failed: status = 0x1

这是我的代码:

这是我的代码,我在设备配对时发送audiofile,

InputStream inStream = getResources().openRawResource(R.raw.comman);
                        byte[] music = inputStreamToByteArray(inStream);

                        // Invoke client thread to send
                         message = new Message();
                        message.obj = music;
                        MainApplication.clientThread.incomingHandler.sendMessage(message);

这是将数据转换为块的代码:

byte[] buffer = new byte[Constants.CHUNK_SIZE];
                Log.v(TAG, "Waiting for data.  Expecting " + progressData.remainingSize + " more bytes.");
                int bytesRead = inputStream.read(buffer);
                dataOutputStream.write(buffer, 0, bytesRead);
                progressData.remainingSize -= bytesRead;
                readBuf = buffer;

这是我收到大块字节的代码,

File tempMp3 = File.createTempFile("kurchina", "mp3", getCacheDir());
        tempMp3.deleteOnExit();
        FileOutputStream fos = new FileOutputStream(tempMp3);
        fos.write(mp3SoundByteArray);  //mp3SoundByteArray is byte chunks
        fos.close();
        MediaPlayer mediaPlayer = new MediaPlayer();
        FileInputStream fis = new FileInputStream(tempMp3);
        FileDescriptor fileDescriptor = fis.getFD();
        mediaPlayer.reset();
        mediaPlayer.setDataSource(fileDescriptor);
        mediaPlayer.prepare();  // here my app is crashing
        mediaPlayer.start();

1 回答

  • 0

    此错误的原因

    • 文件路径不正确或未找到Uri!

    • 缺少权限

    • 媒体文件格式不兼容

相关问题