Android:Media Player不使用ImageView暂停第二个活动

时间:2016-08-06 21:58:15

标签: java android

我几乎花了一天时间试图解决它,但却无法实现它。我基本上有两项活动MainActivity.javaGameActivity.java。音乐停止但返回MainActivity.java并多次使用GameActivity.java返回ImageView

  

MainActivity.java

public class MainActivity extends AppCompatActivity {

ImageView iv;
public static final String BG_SOUND_CHECK = "background playing!";
//  public static MediaPlayer backgroundSound;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
final Handler handler = new Handler();
final MediaPlayer backgroundSound = MediaPlayer.create(this, R.raw.background_music);


handler.postDelayed(new Runnable() {
    @Override
    public void run() {
        backgroundSound.setLooping(true);
        backgroundSound.start();
        Log.v(BG_SOUND_CHECK, "After loop Started!");

    }
}, 3000);


getSupportActionBar().hide();
iv = (ImageView)findViewById(R.id.playImage);
iv.setOnClickListener(new View.OnClickListener(){
    public void onClick(View view1){
//                backgroundSound.setLooping(false);
                backgroundSound.pause();
//                Log.v(BG_SOUND_CHECK, "Playing After Play Button Click");
                Intent myIntent = new Intent(MainActivity.this, GameActivity.class);
//         myIntent.putExtra("backgroundSoundObj",backgroundSound);
                startActivity(myIntent);
//                Log.v(BG_SOUND_CHECK, "After Game Scene");

    }
});


 }
}
  

GameActivity.java

   public class GameActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_game);

    //        MainActivity.backgroundSound.pause();

    //   Rest of the code
    }
    }

我尝试将音乐onPause();放进去 1)ImageView onClick(); 2)加载GameActivity.java后立即

但是只有在我尝试回到MainActivity.java并多次前往GameActivity.java之后,两种方式都会暂停。

1 个答案:

答案 0 :(得分:0)

您是否看到如何将backgroundSound.start()放入postDelayed-3000?

backgroundSound.pause()在3000毫秒之前的任何时候都不会做任何事情。

它与你在两个活动之间来回无关,只是这样做会占用超过3000毫秒,所以当你点击暂停()时,已经过了3000毫秒。

为了适应您当前的代码,您可以做的是将其分成Runnable。

Runnable bgSound = new Runnable() {
    @Override
    public void run() {
        backgroundSound.setLooping(true);
        backgroundSound.start();
        Log.v(BG_SOUND_CHECK, "After loop Started!");
    }
}

将其与handler.postDelayed(bgSound, 3000)

一起使用

onClick中,如果您想在播放前停止播放,可以使用handler.removeCallbacks(bgSound),在播放后停止播放pause()。如果你不在乎知道它是否已经开始,你可以同时做两件事,也应该正常工作。

(如果您在离开主要活动后不希望播放音乐,则还应在onDestroy和/或onPause中执行相同的操作