如何在MediaPlayer上播放Android InputStream?
|
因此,我的资产文件夹中有一个小型音频文件,我想打开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,0, 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
没有找到相关结果
已邀请:
2 个回复
咖哀烈
坝镰补翔奋
该文件应位于资产文件夹中