如何在android中的mainActivity之外使用MediaPlayer(如何从mainActivity调用它)

时间:2014-12-11 14:03:07

标签: java android media-player

IM尝试创建一个简单的应用程序,为此我必须有一个不在mainActivity中的mediaPlayer。我该怎么做?(在什么类中需要它以及如何编写方法并在main中实例化它)。 我对Android很新,并且不知道如何做到这一点(它可能非常简单......) 任何帮助都会很棒。谢谢你!

2 个答案:

答案 0 :(得分:1)

您可以在每个Activity中创建这样的类:

public class MediaPlayerUtil {
    public static void playSound(Context context, int soundFileResId) {
        MediaPlayer mp = MediaPlayer.create(context, soundFileResId);
        mp.setOnCompletionListener(new OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                mp.reset();
                mp.release();
                mp=null;
            }
       });
       mp.start();
    }
}

然后在任何Activity内部调用MediaPlayerUtil.playSound(this, R.raw.your_sound_file),这将是对您的活动的引用,并通过R.raw.your_sound_file引用项目的/ res / raw目录中的文件。

答案 1 :(得分:0)

这是一个简单的应用程序的示例,例如要求创建文件夹raw,音频所在的位置。 mysong用音频名称替换文件

public class MainActivity extends AppCompatActivity implements  View.OnClickListener {
    Button play, stop;
    MediaPlayer mp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        play = (Button)findViewById(R.id. play);
        stop = (Button)findViewById(R.id.stop);

        play.setOnClickListener(this);
        stop.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.play:
                play();
             break;
            case R.id.stop:
                stop();
                break;
        }
    }
    private  void play (){
        destruir();
        mp = MediaPlayer.create(this, R.raw.mysong);
        mp.start();
    }
    private void stop(){
        mp.stop();
    }
    private void destruir(){
        if (mp !=null)
            mp.release();
    }
}