我试着用Services在安卓上玩简单游戏中的背景音乐。
使用链接:Android Life Cycles
但是这段代码不能正常工作,onResumeActivity, onPauseActivity被调用,但是即使在调用onPauseActivity方法时,音乐仍然在后台运行。
当应用程序处于后台时,音乐继续播放。
在Android应用程序/游戏中还有其他播放背景音乐的方法吗?
发布于 2015-10-22 15:55:27
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);
}}
发布于 2015-10-07 10:10:55
我想这个密码对你有用。添加这个类(包含在活动类中)。
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);
}希望能帮上忙!
https://stackoverflow.com/questions/32989105
复制相似问题