Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从目录连续播放音频文件_Android_Audio - Fatal编程技术网

Android 从目录连续播放音频文件

Android 从目录连续播放音频文件,android,audio,Android,Audio,我正在使用以下代码从SD卡中的目录连续播放音频文件 我面临的问题是一次播放所有文件。我需要一个接一个地玩 mPlay.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub getFiles

我正在使用以下代码从SD卡中的目录连续播放音频文件

我面临的问题是一次播放所有文件。我需要一个接一个地玩

mPlay.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) 
            {
                // TODO Auto-generated method stub
            getFiles();
            }

            private void getFiles() {
                // TODO Auto-generated method stub
                File dir = new File("/sdcard/sdcard");
                 int index=0;
                 String[] children = dir.list();
                 for(int i=0;i<children.length;i++)
                 {
                     String filename=children[i];
                     playAudio(filename);
                 }
            }

            private void playAudio(String filename) {
                // TODO Auto-generated method stub
                 mPlayer = new MediaPlayer();
                    try {
                        mPlayer.setDataSource(filename);
                    } catch (IllegalArgumentException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    } catch (IllegalStateException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                    try {
                        mPlayer.prepare();
                    } catch (IllegalStateException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                    mPlayer.start();
                    mSeekBar.setMax(mPlayer.getDuration());
                    new Thread(new Runnable(){

@Override
public void run() 
{
// TODO Auto-generated method stub
while(mPlayer!=null && mPlayer.getCurrentPosition() <mPlayer.getDuration())
    {
Log.d("Indide Run Method",Integer.toString(mPlayer.getCurrentPosition()));
    try 
    {
          Thread.sleep(100);
     } 
catch (InterruptedException e) 
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
        }
                                mSeekBar.setProgress(mPlayer.getCurrentPosition());
                            }   


                        }

                    }
                    ).start();
                    mSeekBar.setProgress(mPlayer.getCurrentPosition());

        pauseRecord.setVisibility(View.INVISIBLE);  


            }

        });

要连续播放一个文件,可以使用MediaPlayer.OnCompletionListener:

final MediaPlayer mp1 = new MediaPlayer();
mp1.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp1.setDataSource(file1);
mp1.prepare();
mp1.start();

mp1.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mp) {
        mp1.release();
        //file 1 has played, now play the second
    }
});
final MediaPlayer mp1 = new MediaPlayer();
mp1.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp1.setDataSource(file1);
mp1.prepare();
mp1.start();

mp1.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mp) {
        mp1.release();
        //file 1 has played, now play the second
    }
});