我有一个应用程序记录音频并将其保存在Parse上的服务器上。
我试图检索它以播放录制的音频
服务器介于两者之间,因为应用程序将音频从一个用户发送到另一个用户。
关于ParseFile
实际如何运作以及回放的最佳方式,我有点困惑。
目前我正在查询该对象,将其音频属性设为ParseFile
,然后获取该网址,然后从服务器传输该网址。
// result is the object I got from the query, it holds the ParseFile
ParseFile audioFile = result.getAudioFile();
String audioFileURL = audioFile.getUrl();
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setAudioStreamType(android.media.AudioManager.STREAM_MUSIC);
try {
mMediaPlayer.setDataSource(audioFileURL);
mMediaPlayer.prepare();
mMediaPlayer.start();
}catch (Exception e){}
我认为这不是最佳方式,而且最好将其保存在本地。
我知道你可以使用getDataInBackground
,但我对于它对实际ParseFile
的影响感到困惑。一旦我在后台获取数据,作为一个字节数组,最好的存储方式是什么,以便我不必每次都调用getDataInBackground
?我应该根据我在getDataInBackground
中获得的数据覆盖ParseFile吗?
感谢。
答案 0 :(得分:0)
来自kurtis92的问题:How to retrieve and play mp3 files from Parse.com
MediaPlayer mediaPlayer;
public void play(View view) { // function onClick of a button
mediaPlayer = new MediaPlayer();
ParseQuery<ParseObject> query = ParseQuery.getQuery("sveglia"); // sveglia is the name of the Class
query.getInBackground("hQHeNCqccH", new GetCallback<ParseObject>() { //hQHeNCqccH is the ID of the file audio u wanna stream
public void done(ParseObject recording, com.parse.ParseException e) {
if (e != null) {
//do nothing
} else {
ParseFile audioFile = recording.getParseFile("audio"); // audio is the column of the file audio
String audioFileURL = audioFile.getUrl();
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.setDataSource(audioFileURL);
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IllegalArgumentException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (SecurityException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalStateException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
});
}