Autore Topic: Impostare Audio Background & Pressed ImageButton  (Letto 391 volte)

Offline Zed92

  • Nuovo arrivato
  • *
  • Post: 34
  • It's just a ride!
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2 mini
  • Sistema operativo:
    Windows 8
Impostare Audio Background & Pressed ImageButton
« il: 14 Maggio 2015, 00:10:30 CEST »
0
Per adesso mi sto occupando dell'audio in background con MediaPlayer, successivamente mi occuperò di SoundPool per ImageButton.

Sono riuscito a far partire all'avvio dell'app un file audio, in loop continuo, e con volume diminuito.

Codice (Java): [Seleziona]
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.mioaudio);
mediaPlayer.setLooping(true);
mediaPlayer.setVolume(0.07f, 0.07f);
mediaPlayer.start();

L'audio continua a riprodursi anche se cambio activity, e fin qui tutto bene.

Il problema si pone quando però devo tornare indietro con le activity, o meglio quando tramite un Intent torno alla MainActivity.
In questo caso il MediaPlayer inizia un nuovo loop che va a sovrapporsi all'altro. (o gli altri)

Ho provato diverse soluzioni tra cui le funzioni isPlaying e isLooping ma non funzionano.

Esempio:
Codice (Java): [Seleziona]
if (!mediaPlayer.isLooping()) { CODICE AUDIO }
if (!mediaPlayer.isPlaying ()) { CODICE AUDIO }
if (!mediaPlayer.isLooping()||!mediaPlayer.isPlaying ()) { CODICE AUDIO }

La soluzione ideale sarebbe tornare alla MainActivity senza interrompere l'audio, facendo il modo che non se ne riproduca uno nuovo.


Edit:
Un problema simile, causato da  isLooping e is Playing è nato ora che volevo implementare il bottone per silenziare l'audio di sottofondo.
Codice (Java): [Seleziona]
        audio.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mediaPlayer.isLooping()||mediaPlayer.isPlaying () ) {
                    mediaPlayer.stop();
                    audio.setImageResource(R.drawable.speaker);
                }else{
                    mediaPlayer.start();
                    audio.setImageResource(R.drawable.speaker_mute);

                }
            }
        });

Visto che il controllo mediaPlayer.isLooping()||mediaPlayer.isPlaying () non funziona, il bottone riesce solamente a stoppare l'audio, ma non a farlo ripartire.

idee? :/
« Ultima modifica: 14 Maggio 2015, 00:41:54 CEST da Zed92 »

Offline Zed92

  • Nuovo arrivato
  • *
  • Post: 34
  • It's just a ride!
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2 mini
  • Sistema operativo:
    Windows 8
Re:Impostare Audio Background & Pressed ImageButton
« Risposta #1 il: 14 Maggio 2015, 23:10:13 CEST »
0
Up! :)

Post unito: 15 Maggio 2015, 13:54:09 CEST
Per il secondo problema ho risolto sostituendo:
Codice (Java): [Seleziona]
mediaPlayer.stop();con:
Codice (Java): [Seleziona]
mediaPlayer.pause();
Ma per i Mediaplayer in sovrapposizione quando ci sono Intent ancora niente.. idee?
« Ultima modifica: 15 Maggio 2015, 13:54:09 CEST da Zed92, Reason: Merged DoublePost »

Offline Zed92

  • Nuovo arrivato
  • *
  • Post: 34
  • It's just a ride!
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    LG G2 mini
  • Sistema operativo:
    Windows 8
Re:Impostare Audio Background & Pressed ImageButton
« Risposta #2 il: 19 Maggio 2015, 13:08:02 CEST »
0
Se a qualcuno può interessare, non sono riuscito a risolvere del tutto il problema, ma sono riuscito a fare in modo che ad ogni cambio Activity l'audio venga stoppato e riprodotto nuovamente.

Per fare ciò mi sono servito di questi due metodi:
Codice (Java): [Seleziona]
 @Override
 protected void onDestroy() {
  // TODO Auto-generated method stub
  super.onDestroy();
  if (mediaPlayer != null) {
   mediaPlayer.release();
   mediaPlayer = null;
  }
 }

 @Override
 protected void onPause() {
  // TODO Auto-generated method stub
  super.onPause();
  if (mediaPlayer != null) {
   mediaPlayer.release();
   mediaPlayer = null;
  }
 }

Inoltre ho implementato una variabile SharedPreferences che tiene sott'occhio lo stato del sottofondo musicale, grazie alla quale è possibile alla riapertura dell'app ricordare se l'audio era attivo o non.

Se qualcuno ha una soluzione che permette anche di mantenere in più Activity la stessa traccia audio, e contemporaneamente fare in modo che non si sovrapponga più volte, ben venga. A breve mi occuperò anche del "Pressed Button".