我几乎花了一天时间试图解决它,但却无法实现它。我基本上有两项活动MainActivity.java
和GameActivity.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
之后,两种方式都会暂停。
答案 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
中执行相同的操作