2015-07-15 4 views
0

У меня есть приложение, которое записывает аудио и сохраняет его на сервере в Parse. Я пытаюсь восстановить его, чтобы воспроизвести записанное аудио.
Сервер находится между ними, потому что приложение отправляет аудио от одного пользователя другому. Я просто немного смущен относительно того, как работает ParseFile, и что это лучший способ воспроизвести его.
На данный момент я обращаюсь к объекту, получаю его свойство звука как ParseFile, а затем передайте URL-адрес с сервера.
Извлечение аудио из Parse

// 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 каждый раз? Должен ли я перезаписать ParseFile новым, который я делаю из данных, которые я получаю в getDataInBackground?

Спасибо.

ответ

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