0
這裏是我的應用程序的工作原理:應用程序接收到曲播放MIDI文件中的一個的AsyncTask在Android
後,它會在文件中首先保存到SD卡,然後播放。 我試圖用一個類調用的asynctask播放音樂(不是一個活動,而是一個處理程序)。但是,音樂只能播放1-2秒。下面是的AsyncTask的回調代碼:
fos = new FileOutputStream(file);
fos.write(receivedMusicPayload);
fos.flush();
fos.close();
PlayMusicManager pmm = new PlayMusicManager(qrC);
pmm.execute();
這裏是playermanager:
public class PlayMusicManager extends AsyncTask<Void, Void, Void> {
private QRConnection qrC;
public PlayMusicManager(QRConnection qrC) {
this.qrC = qrC;
}
@Override
protected Void doInBackground(Void... params) {
MediaPlayer mediaPlayer = new MediaPlayer();
File dir = Environment.getExternalStorageDirectory();
File file = new File(dir, "music.mid");
if (file.exists()) // check if file exist
{
FileInputStream fis;
try {
fis = new FileInputStream(file);
FileDescriptor fd = fis.getFD();
mediaPlayer.setDataSource(fd);
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} else {
qrC.getQrActivity().showResult("No such file");
}
return null;
}
@Override
protected void onPostExecute(Void parms) {
qrC.getQrActivity().showResult("Music Done.");
}
感謝您的幫助!
可能是文件而不是當它開始播放存儲的100%。 – iCantSeeSharp