2017-06-12 5 views
0

Ich schreibe eine zusätzliche Klasse wie unten zu "Kontrolle" Musik aus verschiedenen Aktivitäten. Es sollte weiterspielen, wenn ich von Activity 1 auf Activity 2 umschalte. Aber es hört auf, wenn ich backgroundmusik.start(); wieder in meiner zweiten Aktivität:MadiaPlayer Start-Stop-Pause zwischen Aktivitäten

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

Erste Aktivität:

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

}

Zweite Aktivität:

public class Main extends AppCompatActivity{ 

    Music musicPlayer; 


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

Vielen Dank für Ihre Hilfe.

+1

warum Sie Musik in Dienstklasse spielen Dont? –

+0

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

+0

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

Antwort

0

Nun versuchen Sie, diese Klasse hinzuzufügen. Arbeitete für mich ..

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

} 

Oder eine viel bessere Option ist ein service verwenden. Für weitere Informationen können Sie here besuchen.

0

Musik vom Dienst wiedergeben, Vordergrunddienst verwenden.

Offizielle Android-Dokumentation sagt:

, dass ein Dienst ist, dass der Benutzer aktiv bewusst ist, und ist kein Kandidat für das System, wenn wenig Speicher zu töten. Ein vorderer Service muss eine Benachrichtigung für die Statusleiste bereitstellen, die unter der Überschrift "Fortlaufend" befindet. Das bedeutet, dass die Benachrichtigung nicht zurückgewiesen werden kann, wenn der Dienst nicht entweder gestoppt oder aus dem Vordergrund entfernt wurde.

In Ihrem Fall ein Musik-Player, die Musik von einem Dienst spielt sollte im Vordergrund laufen eingestellt werden, da der Benutzer explizit bewusst sein Betrieb ist. Die Benachrichtigung in der Statusleiste kann den aktuellen Titel anzeigen und dem Benutzer ermöglichen, eine Aktivität zum Interagieren mit dem Musikplayer zu starten.

Hier ist ein example

Verwandte Themen