2017-06-12 1 views
0

J'écris une classe supplémentaire comme ci-dessous pour "contrôler" la musique de différentes activités. Il devrait continuer à jouer quand je passerai de l'activité 1 à l'activité 2. Mais ça s'arrête même quand j'appelle backgroundmusik.start(); encore une fois dans ma deuxième activité:MadiaPlayer start-stop-pause entre les activités

public class Music { 

    public static MediaPlayer backgroundmusik; 
    public static int pausedSaver; 



    public static void playAudio(Context c, int id){ 
     backgroundmusik = MediaPlayer.create(c, id); 
     backgroundmusik.setLooping(true); 
     backgroundmusik.start(); 
    } 

    public static void playFrom() { 
     if(!backgroundmusik.isPlaying()) { 
      backgroundmusik.seekTo(pausedSaver); 
      backgroundmusik.setLooping(true); 
      backgroundmusik.start(); 
     } 
    } 
    public static void playPause() 
    { 
     backgroundmusik.pause(); 
     pausedSaver = backgroundmusik.getCurrentPosition(); 
    } 

    public static void stopAudio(){ 
     if(backgroundmusik.isPlaying()) { 
      backgroundmusik.stop(); 
     } 
    } 
} 

Première activité:

public class WelcomeActivity extends AppCompatActivity{ 

    Music musicPlayer; 
    int previous; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.welcome_layout); 

     musicPlayer.playAudio(this,R.raw.dingdong);   

      Intent intent3 = new Intent(getApplicationContext(), Main.class); 
      startActivity(intent3); 
      finish(); 
     } 
    } 

    @Override 
    protected void onRestart() { 
     super.onRestart(); 
     musicPlayer.playFrom(); 
    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 
     musicPlayer.playFrom(); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     musicPlayer.playFrom(); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     musicPlayer.playPause(); 
    } 

    @Override 
    protected void onStop() { 
     super.onStop(); 
     musicPlayer.playPause(); 
    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     musicPlayer.stopAudio(); 
    } 

}

Deuxième activité:

public class Main extends AppCompatActivity{ 

    Music musicPlayer; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main_layout); 
    } 
} 

Merci pour votre aide.

+1

pourquoi ne pas vous jouer de la musique dans la classe de service? –

+0

https://stackoverflow.com/questions/8209858/android-background-music-service –

+0

https://stackoverflow.com/questions/14151661/mediaplayer-service-android –

Répondre

0

Essayez bien d'ajouter cette classe. A travaillé pour moi ..

public class BackgroundSound extends AsyncTask<Void, Void, Void> { 

    @Override 
    protected Void doInBackground(Void... params) { 
     MediaPlayer player = MediaPlayer.create(YourActivity.this, R.raw.test_cbr); 
     player.setLooping(true); // Set looping 
     player.setVolume(100,100); 
     player.start(); 

     return null; 
    } 

} 

Ou une bien meilleure option est d'utiliser un service. Pour plus d'informations, vous pouvez visiter here. Jouez de la musique depuis le service, utilisez le service de premier plan.

0

Documentation officielle Android dit:

qui est un service que l'utilisateur connaît activement et de n'est pas un candidat pour le système de tuer quand de mémoire. Un service de premier plan doit fournir une notification pour la barre d'état, qui est placée sous la rubrique En cours. Cela signifie que la notification ne peut pas être ignorée sauf si le service est arrêté ou supprimé à partir du premier plan.

Dans votre cas, un lecteur de musique qui joue la musique d'un service doit être réglé pour fonctionner au premier plan, parce que l'utilisateur est explicitement conscient de son fonctionnement. La notification dans la barre d'état peut indiquer la chanson en cours et permettre à l'utilisateur de lancer une activité pour interagir avec le lecteur de musique.

Voici un example