如何在android中以编程方式停止其他活动的媒体播放器?

问题描述:

你好我想在我的应用程序使用媒体播放器,我已经试图阻止来自其他活动的媒体播放器我的编码是以下几点:如何在android中以编程方式停止其他活动的媒体播放器?

FirstActivity:

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

    } 

SecondActivity:

不得不停止媒体播放器后所述定时器是端:

@Override 
     public void onFinish() { 

      textViewTime.setText(hmsTimeFormatter(timeCountInMilliSeconds)); 
      // call to initialize the progress bar values 
      setProgressBarValues(); 
      // hiding the reset icon 
      imageViewReset.setVisibility(View.GONE); 
      // changing stop icon to start icon 
      imageViewStartStop.setImageResource(R.drawable.icon_start); 
      // making edit text editable 
      editTextMinute.setEnabled(true); 
      // changing the timer status to stopped 
      timerStatus = TimerStatus.STOPPED; 

     MainActivity main = new MainActivity(); 
      main.stop(); 
     } 

    }.start(); 
    countDownTimer.start(); 
} 

上述编码是示出了错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setBackgroundResource(int)' on a null object reference 
                     at com.digitamatix.mukilfm.MainActivity.stop(MainActivity.java:549) 

我必须阻止媒体播放器中的第一个活动,请帮我在我的编码来解决我的问题

+0

您正在创建MainActivity而不是这个,你可以使用广播接收器或接口停止 –

+0

的新实例,请给我任何编码教程 – udhaya

看到我已经开始与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(); 

因此,根据要求,你可以使用这个。停止媒体播放器。其他选项本地广播也。 希望这会帮助你。

(根据您发布的代码)

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

您正在创建的MainActivityistance但是,因为它从来没有被所示,onCreate和其他生命周期方法从未被触发,你的control为空。

您有做至少3种方式:

  1. 创建不涉及任何XML资源的方法,它只是停止播放 1B。尝试使用setResult,引用正在运行的活动的新度并不是一个好习惯。只需使用S tartActivityForResult(activityB)setResult(res)来触发onActivityResult回调。
  2. 将播放器在Singleton和引用它,无论你是
  3. 使用片段导航,而不是活动,指的是玩家的主要活动

希望这有助于!

+0

请给我任何教程,这 – udhaya

+0

@udhaya我添加了一个链接和一些更多的描述,这些是易于谷歌的东西,我不知道任何教程比其他更好 –