gpt4 book ai didi

android - 在Android应用程序的所有 Activity 中播放背景音乐

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:06:43 25 4
gpt4 key购买 nike

我花了大约 20 个小时到现在,我的问题仍然存在。我正在创建一个具有多个 Activity (mainMenu、aboutUs、设置)的 android 应用程序。我按照以下链接的最佳答案进行操作,没问题。 Music played using asyncTask isn't stopping by using cancel

当我运行我的应用程序时(我的代码在 mainActivity 中),音乐开始播放,并且在导航到其他 Activities 时不会停止。这很好。但是我在我的 setting_activity Activity 中放了一个 ToggleButton,我希望这个按钮可以启动和停止这首音乐。现在我的问题是如何从 setting_activity 停止和/或重新开始播放音乐?

在另一种解决方案中:我创建了一个 MusicManager 类,我称之为 start 和 stop 。但这也有几个问题:

  1. 音乐从 mainMenu_activity 开始播放,但只播放了大约 15 秒就停止了。
  2. 我无法停止其他 Activity 的音乐。此时我在 mainMenua_activity 中播放音乐,因为此行代码:

    MusicManager mm = new MusicManager(this, R.raw.background_sound);
    mm.play();

我怎么能停止播放呢? 3. 当我导航到其他 Activity 时音乐停止了。

public class MusicManager implements OnPreparedListener {

static MediaPlayer mPlayer;
Context context;
private int mySoundId;

public MusicManager(Context ctx, int musicID) {
context = ctx;
mySoundId = musicID;
mPlayer = MediaPlayer.create(context, mySoundId);
mPlayer.setOnPreparedListener(this);
}

public void play() {
mPlayer = MediaPlayer.create(context, mySoundId);

}

public void stop() {
mPlayer.stop();
mPlayer.release();
}

@Override
public void onPrepared(MediaPlayer player) {
player.start();
mPlayer.setLooping(true);
mPlayer.setVolume(25, 25);

}

}

最后我想在所有 Activity 中播放背景音乐而不停止/开始音乐。我该怎么做?

最佳答案

您可以将音乐播放器放在服务中。这将使它独立于 Activity ,您仍然可以通过 Intent 控制播放。

这里有一些代码示例:https://stackoverflow.com/a/8209975/2804473下面的代码是由 Synxmax 在 StackOverflow 上编写的,并包含在上面的链接中:

public class BackgroundSoundService extends Service {
private static final String TAG = null;
MediaPlayer player;
public IBinder onBind(Intent arg0) {

return null;
}
@Override
public void onCreate() {
super.onCreate();
player = MediaPlayer.create(this, R.raw.idil);
player.setLooping(true); // Set looping
player.setVolume(100,100);

}
public int onStartCommand(Intent intent, int flags, int startId) {
player.start();
return 1;
}

public void onStart(Intent intent, int startId) {
// TO DO
}
public IBinder onUnBind(Intent arg0) {
// TO DO Auto-generated method
return null;
}

public void onStop() {

}
public void onPause() {

}
@Override
public void onDestroy() {
player.stop();
player.release();
}

@Override
public void onLowMemory() {

}
}

关于android - 在Android应用程序的所有 Activity 中播放背景音乐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27579765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com