简体   繁体   English

MediaPlayer从/ res / raw播放下一首曲目

[英]MediaPlayer play next track from /res/raw

I'm making an lullaby app.Initially there are two tracks in my /res/raw folder. 我正在制作摇篮曲app.Initially在我的/ res / raw文件夹中有两首曲目。 On completing first track I want it to play next track. 在完成第一首曲目后,我希望它能够播放下一曲目。 i did this using onCompletionListener.But it is showing force close error. 我使用onCompletionListener做了这个。但它显示强制关闭错误。 Below is my code for that. 下面是我的代码。 So can anyone tell me how to do that? 所以有人能告诉我该怎么做吗?

public class PlayRandom extends Activity implements OnCompletionListener{
        MediaPlayer mp;
    int rnum;
    TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.playrandom);
                mp.setOnCompletionListener(this);
        mp = MediaPlayer.create(this, R.raw.lullaby1);
        mp.start();     
    }
    @Override
    public void finish() {
        // TODO Auto-generated method stub
        super.finish();
        mp.stop();
    }
    public void onCompletion(MediaPlayer mp) {
        // TODO Auto-generated method stub
        File pdfFile = new File("res/raw/lullaby2.mp3");
        Uri path = Uri.fromFile(pdfFile);
        mp.stop();
        try{
            mp.setDataSource(getApplicationContext(), path);
        mp.prepare();
        mp.start();
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SecurityException 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();
        }   
    }
}

I tried this but still its not working. 我试过这个,但仍然无法正常工作。 That meand there's something wrong in OnClickListener. 我和OnClickListener中有一些错误。

public class PlayRandom extends Activity implements OnCompletionListener{
    MediaPlayer mp;
int rnum;
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.playrandom);
            mp.setOnCompletionListener(this);
    mp = MediaPlayer.create(this, R.raw.lullaby1);
    mp.start();     
}
@Override
public void finish() {
    // TODO Auto-generated method stub
    super.finish();
    mp.stop();
}
public void onCompletion(MediaPlayer mp) {
    // TODO Auto-generated method stub
    Toast.makeText(this,"Yuppieee!!", Toast.LENGTH_SHORT);
}

} }

use AssetFileDescriptor for playing file from raw folder: 使用AssetFileDescriptor从原始文件夹播放文件:

   AssetFileDescriptor afdes = getAssets().openRawResourceFd(R.raw.lullaby2);
    mp.reset();
    mp.setDataSource(afdes.getFileDescriptor(), afdes.getStartOffset(), afdes.getLength());
    mp.prepare();
    mp.start();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM