播放音乐Parse.com安卓

问题描述:

,所以我喜欢实现音乐播放列表的应用程序,我的音频被上传到Parse.com如MP3,我想找回那些音频..播放音乐Parse.com安卓

final Button btn = (Button) v.findViewById(R.id.button); 
    final ParseFile fileObject = object.getParseFile("music"); 
    if (fileObject != null) { 
     fileObject.getDataInBackground(new GetDataCallback() { 


      @Override 
      public void done(byte[] bytes, com.parse.ParseException e) { 

       final String audioFileURL = fileObject.getUrl(); 
       mediaPlayer = new MediaPlayer(); 
       mediaPlayer.reset(); 
       mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
       btn.setOnClickListener(new OnClickListener() { 

        public void onClick(View arg0) { 
         try { 
          mediaPlayer.setDataSource(audioFileURL); 
          mediaPlayer.prepare(); 
          mediaPlayer.start(); 
         } catch (IllegalArgumentException e1) { 
          e1.printStackTrace(); 
         }//end catch 
         catch (IOException e1) { 
          e1.printStackTrace(); 
         } 
        }//end on click 
       }//end listener 
       ); 
      }//end done 
     });//end get data 
    }//end if 

这是怎么了我从Parse.com检索音乐,但这需要很多时间,特别是我有一个音频列表..我想要一种方式在后台下载音频组..所以当我点击按钮时,音乐播放如此之快.. 任何帮助将不胜感激。

我现在没有时间理解你的代码为什么不起作用,但你可以在github上提交我的示例应用程序(现在提交),你应该解决你的问题......如果不是,请告诉我。请注意该README.md

https://github.com/fullwipe/ParseAudioFileExample

希望它可以帮助...

编辑
这是我的资源库的重要组成部分。
记录并保存:

String outputFile = Environment.getExternalStorageDirectory(). 
         getAbsolutePath() + "/rumor.mp3"; 
myRecorder = new MediaRecorder(); 
       myRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
       myRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); 
       myRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB); 
       myRecorder.setOutputFile(outputFile); 

然后,开始记录...

try { 
          myRecorder.prepare(); 
          myRecorder.start(); 
         } catch (IllegalStateException e) { 
          // start:it is called before prepare() 
          // prepare: it is called after start() or before setOutputFormat() 
          e.printStackTrace(); 
         } catch (IOException e) { 
          // prepare() fails 
          e.printStackTrace(); 
         } 

当你停止录音,将它保存在Parse.com这样:

FileInputStream fileInputStream = null; 
         File fileObj = new File(outputFile); 
         byte[] data = new byte[(int) fileObj.length()]; 

         try { 
          //convert file into array of bytes 
          fileInputStream = new FileInputStream(fileObj); 
          fileInputStream.read(data); 
          fileInputStream.close(); 
         } catch (Exception e) { 
          e.printStackTrace(); 
         } 

         ParseFile parseAudioFile = new ParseFile("audiofile.mp3", data); 
         parseAudioFile.saveInBackground(); 

         ParseObject parseObject = new ParseObject("AudioFileClass"); 
         parseObject.put("audiofile", parseAudioFile); 
         parseObject.saveInBackground(new SaveCallback() { 
          public void done(ParseException e) { 
           if (e == null) { 
            Toast.makeText(getApplicationContext(),"Audio file saved successfully", Toast.LENGTH_SHORT).show(); 
           } else { 
            Toast.makeText(getApplicationContext(),"Error: audio file not saved", Toast.LENGTH_SHORT).show(); 
           } 
          } 
         }); 

和检索从Parse.com播放非常简单,我使用了ParseQueryAdapter。这是您获取mp3文件并播放的部分:

ParseFile descr = object.getParseFile("audiofile"); 
       if (descr != null) { 
        String audioFileURL = descr.getUrl(); 
        MediaPlayer mediaPlayer = new MediaPlayer(); 
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 

        try { 
         mediaPlayer.setDataSource(audioFileURL); 
         mediaPlayer.prepare(); 
         mediaPlayer.start(); 
        } 
        ... 
        ... 
+0

这并不是提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 – Jost

+0

@Jost是正确的,顺便说一句,我编辑了我的答案;) – Kurtis92

+0

@ Kurtis92我认为你的代码面临同样的问题,打开音频需要很长时间。 – Rawan