我想在Android上使用Services
在簡單的遊戲中播放背景音樂。在簡單的遊戲中在Android中播放背景音樂
使用鏈接:Android Life Cycles
但是這代碼不能正常工作,onResumeActivity, onPauseActivity
被稱爲但是音樂保存在後臺運行,即使onPauseActivity
方法被調用。
當應用程序處於後臺時,音樂會繼續播放。
有沒有其他的方式來播放Android應用/遊戲中的背景音樂?
我想在Android上使用Services
在簡單的遊戲中播放背景音樂。在簡單的遊戲中在Android中播放背景音樂
使用鏈接:Android Life Cycles
但是這代碼不能正常工作,onResumeActivity, onPauseActivity
被稱爲但是音樂保存在後臺運行,即使onPauseActivity
方法被調用。
當應用程序處於後臺時,音樂會繼續播放。
有沒有其他的方式來播放Android應用/遊戲中的背景音樂?
public class SoundGameBaseActivity extends Activity {
public static boolean isSoundPaused = false;
public static MediaPlayer mp;
protected static final String TAG = SoundGameBaseActivity.class.getName();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
playMusic();
}
public static boolean isAppWentToBg = false;
public static boolean isWindowFocused = false;
public static boolean isMenuOpened = false;
public static boolean isBackPressed = false;
@Override
protected void onStart() {
Log.d(TAG, "onStart isAppWentToBg " + isAppWentToBg);
applicationWillEnterForeground();
super.onStart();
}
private void applicationWillEnterForeground() {
if (isAppWentToBg) {
//Google Analytics
MyApp.getInstance().trackScreenView("ApplicationActivated");
isAppWentToBg = false;
// Toast.makeText(getApplicationContext(), "App is in foreground",
// Toast.LENGTH_SHORT).show();
playMusic();
}
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "onStop ");
applicationdidenterbackground();
}
public void applicationdidenterbackground() {
if (!isWindowFocused) {
isAppWentToBg = true;
Toast.makeText(getApplicationContext(),
"App is Going to Background", Toast.LENGTH_SHORT).show();
stopMusic();
}
}
public void TurnOnMusicAgain() {
}
void playMusic() {
if (mp == null) {
mp = MediaPlayer.create(this, R.raw.background1);
// mp.prepare();
mp.start();
mp.setLooping(true);
} else {
if (mp.isPlaying()) {
} else {
Log.e("", "coming back");
mp.start();
}
}
}
void stopMusic() {
if (mp != null)
mp.pause();
}
@Override
public void onBackPressed() {
if (this instanceof StartScreen) {
} else {
isBackPressed = true;
}
Log.d(TAG,
"onBackPressed " + isBackPressed + ""
+ this.getLocalClassName());
super.onBackPressed();
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
isWindowFocused = hasFocus;
Log.e("Is Window Focus", "" + isWindowFocused);
if (isBackPressed && !hasFocus) {
isBackPressed = false;
isWindowFocused = true;
}
super.onWindowFocusChanged(hasFocus);
}
}
我認爲這段代碼適合你。添加這個類(包含在你的活動類中)。
public class BackgroundMusic extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
MediaPlayer backgroundmusic = MediaPlayer.create(YourActivity.this, R.raw.yourbackgroundmusic);
player.setVolume(100,100);
player.setLooping(true);
player.start();
return null;
}
}
,創造它
BackgroundMusic bm = new BackgroundMusic();
上的onResume方法:
public void onResume() {
super.onResume();
bm.execute(null);
}
而且在onPause方法:
public void onPause() {
super.onPause();
bm.cancel(true);
}
希望這有助於!
如果我們從一個活動移動到另一個活動的onPause就會被調用。 –
你試過了嗎? – AndroidLTG
是的,我之前試過,它暫停了音樂,一旦我從一個活動轉移到另一個。 –