从Parse中检索音频

时间:2015-07-15 00:44:16

标签: android parse-platform

我有一个应用程序记录音频并将其保存在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吗?

感谢。

1 个答案:

答案 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();
                      }
                  }
             }
         });
      }