Android:播放多个音轨

时间:2011-12-29 03:54:37

标签: android

我正在开发Android并且一直在尝试创建一个异步任务,根据一组布尔值按顺序播放音频文件(如果i1为真,则播放i1,然后当i1完成时,如果i2是真的它播放等等)。我的第一次尝试不是崩溃应用程序,但也没有播放音频文件。

    class SessionMusicTask extends AsyncTask<Void, Void, Void>{

        @Override
        protected Void doInBackground(Void... params) {
            try {
                while(playing == true){
                if(i1 == true && done == true){
                    done = false;
                    player.setDataSource(i1Loc);
                    player.prepare();
                    player.start();
                    player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

                        public void onCompletion(MediaPlayer mp) {
                            done = true;

                        }
                    });
                }
                }
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
        }

    }

这是解决问题的最佳方法吗?知道为什么文件没有播放? 感谢您提前提供任何帮助。

更新: 我只是在onPostExecute()中放了一个finish(),活动几乎立即结束,让我相信任务甚至没有开始播放音频文件?

2 个答案:

答案 0 :(得分:1)

确保在播放完歌曲时释放MediaPlayer课程,否则您会看到一些奇怪的行为:

    mp.release();

答案 1 :(得分:0)

在:: doInBackground(Void ... params){

之外写下以下内容
player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

                            public void onCompletion(MediaPlayer mp) {
                                done = true;

                            }
                        });