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

Java 如何在android的mainActivity之外使用MediaPlayer(如何从mainActivity调用它),java,android,media-player,Java,Android,Media Player,我试图创建一个简单的应用程序,为此我必须有一个不在主活动中的mediaPlayer。我如何做到这一点?(它需要是什么类型的类,以及如何编写方法并在main中实例化它)。 我对安卓系统很陌生,不知道怎么做(可能很简单…) 任何帮助都会很好。谢谢你 您可以创建这样一个类,以便在每个活动中使用: public class MediaPlayerUtil { public static void playSound(Context context, int soundFileResId) {

我试图创建一个简单的应用程序,为此我必须有一个不在主活动中的mediaPlayer。我如何做到这一点?(它需要是什么类型的类,以及如何编写方法并在main中实例化它)。 我对安卓系统很陌生,不知道怎么做(可能很简单…)
任何帮助都会很好。谢谢你

您可以创建这样一个类,以便在每个活动中使用:

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();
    }
}

然后在任何活动中,只需调用
MediaPlayerUtil.playSound(这个,R.raw.your\u sound\u文件)
,其中将引用您的活动,并通过R.raw.your\u sound\u文件引用项目/res/raw目录中的文件。

这是一个简单应用程序的示例,要求您只需创建文件夹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();
    }
}

你必须向我们展示你在解决这个问题上的努力。StackOverflow不是一个“代码订单”网站?你认为有什么可能的解决办法?你有没有试过在其他地方寻找这个答案?首先尝试使用服务谢谢你的回答。第二,是否可以在MediaPlayerUtil中指定文件名(我想从选择中随机设置)?是的,当然可以。您可以在MediaPlayerUtil类中为您的声音指定一个资源ID列表,并在每次调用时随机选择一个。