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

时间:2016-05-16 09:40:04

标签: android audio streaming bytearray media-player

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

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

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

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

错误: MediaPlayer准备失败:状态= 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 :(得分:0)

此错误的原因

  1. 文件路径不正确或未找到Uri!
  2. 未获得许可
  3. 媒体文件格式不兼容