0

我正在我的 android 应用程序中下载和加密 mp3 文件。但我正在尝试解密和读取文件而不将文件写回文件系统。当我尝试使用 CipherInputStream 将 mp3 流式传输到 android Mediaplayer API 时,它无法识别该文件。但是,当我尝试转换为字节数组并将其作为 ByteArrayInputStream 流式传输时,它可以工作,但我不想这样做,因为较大的文件可能需要很多时间并将数据存储在 JVM 中。

这是我的代码

FileInputStream fis = new FileInputStream(file);
CipherInputStream cis = new CipherInputStream(fis, cipher);
mbuffer = new ByteArrayInputStream(getByte(cis));
Response streamResponse = new Response(Status.OK, mimeType, mbuffer);

上面的代码工作正常,但这个问题

new ByteArrayInputStream(getByte(cis));

getByte方法中,我转换CipherInputStream为 byte 然后将其转换回InputStream.

我正在尝试将 cis 直接流式传输到

Response streamResponse = new Response(Status.OK, mimeType, cis);

但不适用于 MediaPlayer

4

1 回答 1

0
         File tempMp3 = File.createTempFile("kurchina", "mp3", getCacheDir());

         tempMp3.deleteOnExit();

         FileOutputStream fos = new FileOutputStream(tempMp3);

         fos.write(mp3SoundByteArray);

         fos.close();



         FileInputStream fis = new FileInputStream(tempMp3);

         mp.setDataSource(fis.getFD());



         mp.prepare();

         mp.start();
于 2014-01-21T07:46:31.683 回答