2015-08-28 40 views
5

Le mie app riproducono due audio, prima dal servizio e il secondo dall'attività. Voglio diminuire il volume del primo audio quando viene riprodotto il secondo audio. Dopo aver interrotto il secondo audio, il volume del primo audio dovrebbe aumentare.Come controllare il volume audio in riproduzione dal servizio?

+0

Quali apri si sta utilizzando per la riproduzione? – JohanShogun

+0

Utilizzo di Android MediaPlayer e audio è nella mia cartella raw. –

risposta

3

MediaPlayer ha metodi per questo. Imposta il volume per il canale sinistro e destro. Unmuted:

mediaPlayerA.setVolume(1.0f, 1.0f); 

mute l'altro giocatore

mediaPlayerB.setVolume(0.0f, 0.0f); 
+0

Semplice ma utile. Grazie ;.) – JanPl

1

Non sono sicuro di come è stato implementato il vostro MediaPlayer in coincidenza con il servizio, ma nel mio prova, ho creato un'istanza di MediaPlayer nel mio servizio classe. Al fine di controllare il volume dell'istanza MediaPlayer della classe di servizio, al di fuori della sua classe di servizio, ho impostato l'istanza MediaPlayer come membro statico.

Così nella mia classe di servizio ho fatto questo:

static MediaPlayer mediaPlayer = new MediaPlayer(); 

Nella mia attività (che ha il proprio di riprodurre file audio) ho fatto questo:

MyOwnService.mediaPlayer.setVolume(0.1f, 0.1f); 

Così, quando ho saltato nella mia attività , Ho usato questa affermazione per prima, prima di riprodurre l'audio dell'attività. Notate che non ho disattivato l'audio (0.0f, 0.0f). Puoi giocare con i tuoi galleggianti fino a quando non si adatta alle tue esigenze. Varia tra 0.0f - 1.0f.

Nella mia attività, ho implementato anche lo MediaPlayer.OnCompletionListener, in modo da sapere quando l'audio per l'attività è stato completato. Questa interfaccia ha un metodo per implementare, onCompletion(MediaPlayer mp). Questo metodo viene chiamato una volta che l'audio è completo.

Quindi, nella mia attività ho fatto anche questo:

@Override 
public void onCompletion(MediaPlayer mp) { 
    MyOwnService.mediaPlayer.setVolume(1.0f, 1.0f); 
} 

Ecco, allora ho alzato il volume della musica servizio di back al massimo, dal momento che la riproduzione audio al suo interno di attività è ora completato.

Ancora, questo era tutto in prova, e non vorrei esporre un membro statico proprio così (in un'app pubblicata), vorrei incapsularlo un po 'come, quindi c'è un qualche tipo di controllo degli accessi.

Spero sia stato utile.