Service de musique de fond Android

je développe une application de divertissement sur android. Je veux jouer de la musique de fond, et je veux utiliser le service. App ont 3 activités et la musique doit être jouée dans toutes les activités. De plus, lorsque l'activité est interrompue, la musique doit S'arrêter et s'arrêter lorsqu'elle est détruite. Quelqu'un peut me dire comment faire cela ? des liens ou des exemples ?

Merci.

27
demandé sur Rohit 2011-11-21 13:45:17

6 réponses

Faire sans service

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

Si vous êtes sérieux au sujet de de le faire avec des services utilisation du lecteur multimédia

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

    }
}

veuillez appeler ce service dans le Manifeste Assurez-vous il n'y a pas d'espace à la fin de le. BackgroundSoundService string

<service android:enabled="true" android:name=".BackgroundSoundService" />
48
répondu Synxmax 2018-02-11 21:33:25

bien trop tard pour la fête ici, mais je vais encore ajouter mon 0,02$, Google a publié un échantillon gratuit appelé universal Music player avec lequel vous pouvez apprendre à diffuser de la musique sur toutes les plateformes android(auto, regarder,mobile,tv..) il utilise le service pour jouer de la musique en arrière-plan, ne Vérifier très utile. voici le lien vers le projet

https://github.com/googlesamples/android-UniversalMusicPlayer

8
répondu war_Hero 2016-09-17 08:12:06

la réponse de @Synxmax est correcte en utilisant un Service et la classe MediaPlayer , cependant vous devez également déclarer le Service dans le Manifeste pour que cela fonctionne, comme cela:

<service
    android:enabled="true"
    android:name="com.package.name.BackgroundSoundService" />
7
répondu edwoollard 2016-03-27 19:27:01

il y a un excellent tutoriel sur ce sujet à HelloAndroid concernant ce même sujet. En fait, c'est le premier succès que j'ai eu sur google. Vous devriez essayer de googler avant de demander ici, car c'est une bonne pratique.

5
répondu Jan Dragsbaek 2011-11-21 09:48:08

j'ai eu des problème pour l'exécuter et j'ai apporter quelques modifications à l'exécuter avec la source mp3. voici le fichier BackfrounSoundService.java . considérer que mon fichier mp3 est dans ma carte sd dans mon téléphone .

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
répondu Mahdi Erfanian 2017-12-19 11:07:28

créer un service de premier plan avec le drapeau START_STICKY .

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

cela peut être appelé de n'importe quelle activité pour jouer de la musique

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)

vous pouvez vous lier au service en utilisant bindService et de faire le service pause/arrêt des méthodes correspondantes du cycle de vie de l'activité.

voici un bon tutoriel sur jouer de la musique en arrière-plan sur Android

1
répondu Sapan Diwakar 2016-11-08 15:07:37