应用媒体播放器强行关闭

时间:2011-01-17 11:38:06

标签: java android

case R.id.btn7:
    if (mp != null && mp.isPlaying()) mp.stop();
    mp = MediaPlayer.create(a.this, R.raw.aaaa);
    mp.start();
    break;
case R.id.btn8:
    if (mp != null && mp.isPlaying()) mp.stop();
    mp = MediaPlayer.create(a.this, R.raw.bbbb);
    mp.start();
    break;

我如何使用setDataSource来阻止我的应用程序强行关闭?请帮忙! 如果我像这样使用它,eclipse会突出显示setDataSource;

public void onClick(View v) {
    switch(v.getId()) {
        case R.id.btn:
            if (mp != null && mp.isPlaying()) mp.stop();
            mp.setDataSource(zoo.this,R.raw.gata);
            mp.prepare();
            mp.start();
            break;

2 个答案:

答案 0 :(得分:2)

好吧,所以我实际上一直在为一个我一直在做的爱好项目做类似的事情。通过阅读MediaPlayer文档一段时间后,这是我提出的方法(请注意,这是为了一次只播放一个声音):

首先,我创建了一个重写的Application类来保存我的全局变量 - 在本例中,我的单个MediaPlayer对象:

public class GlobalVars extends Application {
    private static MediaPlayer mp = new MediaPlayer();

    public static MediaPlayer getMediaPlayer() {
        return mp;
    }
}

一旦应用程序开始,这将创建一个MediaPlayer实例。它也是静态的,因此无需实例化类即可使用。

现在,在我的主类中(特别是在我的onClick方法中),我检索此实例,重置它,设置我的数据源,准备播放,然后启动它:

MediaPlayer mp = GlobalVars.getMediaPlayer();

//note that in my case, item is an object of mine that 
//contains an AssetFileDescriptor, which you can get by
//calling getAssets().openFd("filename.mp3");
AssetFileDescriptor afd = item.getDescriptor();

mp.reset();
//leaving out the try/catch block for conciseness
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mp.prepare();
mp.start();

答案 1 :(得分:0)

如果你有限,你可以使用声音管理器。可以播放的声音。http://developer.android.com/reference/android/media/AudioManager.html