wake-up-neo.com

Android Hintergrundmusikdienst

Ich entwickle eine Unterhaltungs-App für Android. Ich möchte Hintergrundmusik abspielen und dafür den Dienst nutzen. App hat 3 Aktivitäten und Musik muss über alle Aktivitäten gespielt werden. Wenn die Aktivität angehalten wird, muss die Musik PAUSE sein und angehalten werden, wenn sie zerstört wird. Kann mir jemand sagen, wie das geht? irgendwelche links oder beispiele?

Vielen Dank.

31
Rohit

Mach es ohne Service

http://www.rbgrn.net/content/307-light-racer-20-days-61-64-completion

Wenn Sie es so ernst meinen , machen Sie es mit Diensten , die mediaplayer verwenden

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

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() {

    }
}

Rufen Sie diesen Dienst in Manifest auf Stellen Sie sicher, dass am Ende der .BackgroundSoundService-Zeichenfolge kein Leerzeichen steht

<service Android:enabled="true" Android:name=".BackgroundSoundService" />
55
Synxmax

viel zu spät für die Party hier, aber ich werde noch meine $ 0,02 hinzufügen, hat Google ein kostenloses Beispiel namens Universal Music Player veröffentlicht, mit dem Sie lernen können, Musik über alle Android Plattformen zu streamen (auto, watch , mobile, tv ..) es benutzt service um musik im hintergrund abzuspielen, schaut es euch sehr hilfreich an. hier ist der link zum projekt
https://github.com/googlesamples/Android-UniversalMusicPlayer

9
war_Hero

Die Antwort von @ Synxmax ist korrekt, wenn eine Service und die MediaPlayer -Klasse verwendet werden. Sie müssen jedoch auch die Service im Manifest deklarieren, damit dies funktioniert.

<service
    Android:enabled="true"
    Android:name="com.package.name.BackgroundSoundService" />
8
edwoollard

ich hatte ein Problem mit der Ausführung und ich habe einige Änderungen vorgenommen, um es mit mp3-Quelle auszuführen. hier ist BackfrounSoundService.Java Datei. Beachten Sie, dass sich meine MP3-Datei auf meiner SD-Karte in meinem Telefon befindet.

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();
        Log.d("service", "onCreate");
        player = new MediaPlayer();
        try {
            player.setDataSource(Environment.getExternalStorageDirectory().getAbsolutePath() + "/your file.mp3");
        } catch (IOException e) {
            e.printStackTrace();
        }
        player.setLooping(true); // Set looping
        player.setVolume(100, 100);

    }

    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d("service", "onStartCommand");
        try {
            player.prepare();
            player.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
        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() {

    }
}
4
Mahdi Erfanian

Es gibt ein hervorragendes Tutorial zu diesem Thema unter HelloAndroid zu diesem Thema. Tatsächlich war es der erste Treffer, den ich auf Google bekam. Sie sollten versuchen zu googeln, bevor Sie hier nachfragen, da dies eine gute Übung ist.

4
Jan Dragsbaek

Erstelle einen Vordergrunddienst mit dem START_STICKY Flagge.

@Override
public int onStartCommand(Intent startIntent, int flags, int startId) {
   if (startIntent != null) {
       String action = startIntent.getAction();
       String command = startIntent.getStringExtra(CMD_NAME);
       if (ACTION_CMD.equals(action)) {
           if (CMD_PAUSE.equals(command)) {
               if (mPlayback != null && mPlayback.isPlaying()) {
                   handlePauseRequest();
               }
           } else if (CMD_PLAY.equals(command)) {
               ArrayList<Track> queue = new ArrayList<>();
               for (Parcelable input : startIntent.getParcelableArrayListExtra(ARG_QUEUE)) {
                   queue.add((Track) Parcels.unwrap(input));
               }
               int index = startIntent.getIntExtra(ARG_INDEX, 0);
               playWithQueue(queue, index);
           }
       }
   }

   return START_STICKY;
}

Dies kann dann von jeder Aktivität aus aufgerufen werden, um Musik abzuspielen

Intent intent = new Intent(MusicService.ACTION_CMD, fileUrlToPlay, activity, MusicService::class.Java)
intent.putParcelableArrayListExtra(MusicService.ARG_QUEUE, tracks)
intent.putExtra(MusicService.ARG_INDEX, position)
intent.putExtra(MusicService.CMD_NAME, MusicService.CMD_PLAY)
activity.startService(intent)

Sie können mit bindService eine Bindung zum Service herstellen und den Service an den entsprechenden Aktivitätslebenszyklusmethoden anhalten/anhalten.

Hier ist ein gutes Tutorial über Abspielen von Musik im Hintergrund auf Android

2
Sapan Diwakar

Ich habe zwei großartige Ressourcen zum Teilen gefunden. Wenn jemand über Google auf diesen Thread stößt, kann dies hilfreich sein (2018). Eines ist dieses Video-Tutorial, in dem Sie praktisch sehen werden, wie der Service funktioniert. Dies ist gut für Anfänger.

Link: - https://www.youtube.com/watch?v=p2ffzsCqrs8

Andere ist diese Website, die Ihnen wirklich mit Hintergrund-Audio-Player helfen wird.

Link: - https://www.dev2qa.com/Android-play-audio-file-in-background-service-example/

Viel Glück :)

0
Ayush