10 Stimmen

Hintergrundmusik Android

Okey, das ist mein Problem. Ich habe eine Service-Klasse, in der ich es geschafft habe, einen Media-Player zu erstellen, um die ganze Zeit Musik im Hintergrund abzuspielen. Hier ist der Code:

package com.test.brzoracunanje;
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;

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

    return null;
}
@Override
public void onCreate() {
    // TODO Auto-generated method stub
    super.onCreate();
       player = MediaPlayer.create(this, R.raw.test_cbr);
        player.setLooping(true); // Set looping
        player.setVolume(100,100);
        player.start();
}
@Override
public void onStart(Intent intent, int startId) {
    super.onStart(intent, startId);
}
public void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
}

protected void onNewIntent() {
    player.pause();
}
}

Aber jetzt habe ich ein Problem, wenn ich auf die HOME oder ZURÜCK Taste drücke. Die Musik spielt weiter. Weiß jemand, wie man dieses Problem lösen kann?

Und hier ist der Code, wie ich diesen Service in der Klasse aufrufe, in der ich die Musik abspielen möchte;

  Intent svc=new Intent(this, BackgroundSoundService.class);
    startService(svc);

0 Stimmen

Ich sehe nicht, wo das Problem ist... Wolltest du nicht die ganze Zeit Hintergrundmusik spielen lassen?

0 Stimmen

Ich möchte es die ganze Zeit spielen, während die Anwendung läuft, aber wenn ich die Home-Taste drücke, spielt die Musik immer noch.

0voto

Janak Rajyaguru Punkte 106

Versuchen Sie folgendes, um die Hintergrundmusik bei HOME oder BACK zu stoppen.

@Override
protected void onStop() {
    super.onStop();
    ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    List services = activityManager
            .getRunningTasks(Integer.MAX_VALUE);
    boolean isActivityFound = false;

    if (services.get(0).topActivity.getPackageName().toString()
            .equalsIgnoreCase(getPackageName().toString())) {
        isActivityFound = true; // Aktivität gehört zu Ihrer App und ist im Vordergrund.
    }

    if (!isActivityFound) {
        if (player != null && player.isPlaying()) {
            player.release();
        }
    }
}

0voto

drtom Punkte 1

Versuchen Sie, player.stop() in der onDestroy() Methode einzufügen. Das sollte helfen.

0voto

Anthony Cannon Punkte 1212

(Kotlin) Leider hat Jongs Antwort bei mir nicht funktioniert, ich hatte einige Fehler, darunter: MediaPlayer finalisiert, ohne freigegeben zu werden und eine Verzögerung beim Stoppen und Starten des Sounds. Deshalb werde ich den Weg posten, wie ich es gemacht habe, falls jemand anderes das gleiche Problem hat. Meine Implementierung von BackgroundSound verwendet immer noch eine AsyncTask und einen MediaPlayer, jedoch ist es eine nicht-verschachtelte Klasse.

class BackgroundSound : AsyncTask() {

    override fun doInBackground(vararg params: Context): Void? {
        val player = MediaPlayer.create(params[0], R.raw.msc_background)
        player.isLooping = true
        player.start()

        while (!isCancelled) {
        }

        player.stop()
        player.release()

        return null
    }
}

Sie können diese Klasse in Ihrer Activity wie folgt verwenden:

private var backgroundSound: BackgroundSound? = null

override fun onResume() {
    super.onResume()
    backgroundSound = BackgroundSound()
    backgroundSound!!.execute(this)
}

override fun onPause() {
    backgroundSound?.cancel(true)
    super.onPause()
}

0voto

mehdi dorreh Punkte 123

Versuchen Sie, stopService(svc) in der onDestroy()-Methode der Aktivität einzufügen, in der der Dienst gestartet wird. Es funktioniert für mich.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X