所以我的资产文件夹里有一个小音频文件,我想打开一个InputStream来写入一个缓冲区,然后写入一个临时文件,然后打开MediaPlayer播放该临时文件.问题是,当媒体播放器命中mp.Prepare()时,它不播放,从不到达吐司.有没有人曾经这样做过?
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); InputStream str; try { str = this.getAssets().open("onestop.mid"); Toast.makeText(this,"Successful Input Stream Opened.",Toast.LENGTH_SHORT).show(); takeInputStream(str); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }//end on create public void takeInputStream(InputStream stream) throws IOException { //fileBeingBuffered = (FileInputStream) stream; //Toast.makeText(this,"sucessful stream conversion.",Toast.LENGTH_SHORT).show(); try { convertedFile = File.createTempFile("convertedFile",".dat",getDir("filez",0)); Toast.makeText(this,"Successful file and folder creation.",Toast.LENGTH_SHORT).show(); out = new FileOutputStream(convertedFile); Toast.makeText(this,"Success out set as output stream.",Toast.LENGTH_SHORT).show(); //RIGHT AROUND HERE ----------- byte buffer[] = new byte[16384]; int length = 0; while ( (length = stream.read(buffer)) != -1 ) { out.write(buffer,length); } //stream.read(buffer); Toast.makeText(this,"Success buffer is filled.",Toast.LENGTH_SHORT).show(); out.close(); playFile(); }catch(Exception e) { Log.e(TAG,e.toString()); e.printStackTrace(); }//end catch }//end grabBuffer public void playFile() { try { String path = convertedFile.getAbsolutePath(); mp = new MediaPlayer(); mp.setDataSource(path); Toast.makeText(this,"Success,Path has been set",Toast.LENGTH_SHORT).show(); mp.setAudioStreamType(AudioManager.STREAM_MUSIC); mp.prepare(); Toast.makeText(this,"Media Player prepared",Toast.LENGTH_SHORT).show(); mp.start(); Toast.makeText(this,"Media Player playing",Toast.LENGTH_SHORT).show(); } catch (IllegalArgumentException e) { Log.e(TAG,e.toString()); e.printStackTrace(); } catch (IllegalStateException e) { Log.e(TAG,e.toString()); e.printStackTrace(); } catch (IOException e) { Log.e(TAG,e.toString()); e.printStackTrace(); } }//end playFile