Воспроизведение фоновой музыки во всех действиях приложения для Android

Я трачу около 20 часов до сих пор, и моя проблема все еще есть. Я создаю приложение для Android, которое имеет несколько действий (mainMenu, aboutUs, настройка). Я следил за лучшими ответами ниже ссылки, и все было в порядке. Музыка, играемая с использованием asyncTask, не останавливается с помощью отмены

Когда я запускаю свое приложение (мой код находится в mainActivity), музыка начинается, и она не останавливается при переходе к другим действиям. Это хорошо . Но я поставил ToggleButton в свой Activity_activity Activity, и надеюсь, что эта кнопка запускает и останавливает эту музыку. ТЕПЕРЬ мой вопрос: как я могу остановить и / или начать музыку снова из настройки_активности?

В другом решении: я создаю класс MusicManager, и я называю его началом и остановкой. Но это было несколько проблем:

  1. Музыка начиналась в mainMenu_activity, но играла только около 15 секунд, а затем останавливалась.
  2. Я не мог остановить музыку из другой деятельности. На этот раз я играю музыку в mainMenua_ctivity, как это делают коды строк:

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

Как я могу перестать играть? 3. Музыка остановилась, когда я перейду к другим действиям.

 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); } } 

Наконец, я хочу играть фоновую музыку во всех действиях без остановки / начала музыки. Как мне это сделать ?

    Вы можете поместить музыкальный плеер в сервис. Это сделало бы его независимым от действий, и вы все равно сможете контролировать воспроизведение через намерения.

    Вот пример кода: 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() { } }