如何在android编程中停止媒体播放器从另一个活动?

时间:2017-09-12 13:00:50

标签: android timer media-player

您好我正在尝试在我的应用中使用媒体播放器,并且我试图阻止媒体播放器进行我的编码所遵循的其他活动:

FirstActivity:

print()

SecondActivity:

计时器结束后必须停止媒体播放器:

Department

以上编码显示错误:

  public void stop() {

      if (playPause == false) {

            control.setBackgroundResource(R.drawable.play);

            mediaPlayer.stop();
            new Player().cancel(true);
            media.stop();
            media.reset();
            mediaPlayer.reset();
            if (mediaPlayer.isPlaying())
                mediaPlayer.stop();
            mediaPlayer.reset();
            media.stop();

            playPause = true;
        } else {
            control.setBackgroundResource(R.drawable.pause);
            if (intialStage) {
                new Player()
                        .execute(URL);
            } else {
                if (!mediaPlayer.isPlaying())
                    mediaPlayer.start();
            }
            playPause = false;
        }

    }

我必须在首次活动中停止媒体播放器,请帮助我修改我的问题

2 个答案:

答案 0 :(得分:1)

看我已经开始使用 startActivityForResult 开展活动了。 onActivityResult你会得到结果。

startActivityForResult(Activity1.createIntent(this), 1001);


//handle callback result
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        if (requestCode == 1001) {

        }
    }

}

下面的代码将调用您要回调的下一个活动并完成活动。您可以使用此意图传递任何值。

 Intent intent = new Intent();
 setResult(RESULT_OK, intent);
 finish();

因此,根据要求,您可以使用此功能。停止媒体播放器。其他选项本地广播也是如此。 希望这会对你有所帮助。

答案 1 :(得分:0)

(根据您发布的代码)

这里看起来问题是你正在调用一个方法,该方法从一个看不见的活动中引用xml resource

您正在创建istance的{​​{1}},但由于它从未显示过,MainActivity和其他生命周期方法永远不会被触发,而onCreate是空的。

您至少有3种方法:

  1. 创建一个不引用任何xml资源的方法,它只是停止播放器 1B。尝试使用control,引用正在运行的活动的新功能并不是一个好习惯。只需使用S setResulttartActivityForResult(activityB)来触发setResult(res)回调。
  2. 将玩家置于Singleton并随身携带,无论您身在何处
  3. 使用片段导航而不是活动,并参考主要活动中的播放器
  4. 希望这有帮助!