Android-从字节播放mp3 []

我在byte []中有mp3文件(从服务下载),我想在设备上播放它,就像播放文件一样:


MediaPlayer mp = new MediaPlayer();

mp.setDataSource(PATH_TO_FILE);

mp.prepare();

mp.start();

但是我似乎找不到办法。我不介意将文件保存到手机然后播放。如何播放文件,或者先下载再播放?


PIPIONE
浏览 589回答 3
3回答

MM们

好的,谢谢大家,但是我需要从byte []播放mp3,因为我是从.NET webservice获得的(不希望在服务器上存储动态生成的mp3)。最后-可以播放简单的mp3的“陷阱” ...这里是任何需要它的人的代码:private MediaPlayer mediaPlayer = new MediaPlayer();private void playMp3(byte[] mp3SoundByteArray) {    try {        // create temp file that will hold byte array        File tempMp3 = File.createTempFile("kurchina", "mp3", getCacheDir());        tempMp3.deleteOnExit();        FileOutputStream fos = new FileOutputStream(tempMp3);        fos.write(mp3SoundByteArray);        fos.close();        // resetting mediaplayer instance to evade problems        mediaPlayer.reset();        // In case you run into issues with threading consider new instance like:        // MediaPlayer mediaPlayer = new MediaPlayer();                             // Tried passing path directly, but kept getting         // "Prepare failed.: status=0x1"        // so using file descriptor instead        FileInputStream fis = new FileInputStream(tempMp3);        mediaPlayer.setDataSource(fis.getFD());        mediaPlayer.prepare();        mediaPlayer.start();    } catch (IOException ex) {        String s = ex.toString();        ex.printStackTrace();    }}编辑:我已经在4年前写了这个答案-显然,从那时起,很多事情都发生了变化。请参阅Justin关于如何重用MediaPlayer实例的评论。另外,我不知道.deleteOnExit()现在是否适合您-随时提出改进建议,以免临时文件堆积。

拉风的咖菲猫

通过将MP3文件编码为Base64(我已经收到来自Restful API服务编码的数据),然后创建URL对象,我找到了一个简单的解决方案。我在Android 4.1中进行了测试。public void PlayAudio(String base64EncodedString){        try        {            String url = "data:audio/mp3;base64,"+base64EncodedString;             MediaPlayer mediaPlayer = new MediaPlayer();            mediaPlayer.setDataSource(url);            mediaPlayer.prepare();            mediaPlayer.start();        }        catch(Exception ex){            System.out.print(ex.getMessage());        }    }
打开App,查看更多内容
随时随地看视频慕课网APP