Autore Topic: sovrapposizione dell'audio...aiuto!!!  (Letto 924 volte)

Offline paul78

  • Utente normale
  • ***
  • Post: 357
  • Respect: +1
    • Mostra profilo
    • Android Code
  • Sistema operativo:
    Linux - Windows
sovrapposizione dell'audio...aiuto!!!
« il: 25 Luglio 2013, 11:00:39 CEST »
0
ciao a tutti!!!
ho creato un mp3player con un database ma ho un problema!!! praticamente nel momento in cui clicco su in file mp3 mentre il programma è in player non cancella l'mp3 precedente ma si sovrappone!!!!

il mio cod. è questo:

Codice (Java): [Seleziona]
...
link_mp3 = mp3.getText().toString();
cmdReset();
cmdSetDataSource(link_mp3);

...

private void cmdReset(){
        if (mediaPlayer == null){
                mediaPlayer = new MediaPlayer();
                mediaPlayer.setOnErrorListener(mediaPlayerOnErrorListener);
        }
        mediaPlayer.reset();
        mediaPlayerState = MP_State.Idle;
    }

private void cmdSetDataSource(String path){
        if(mediaPlayerState == MP_State.Idle){
                try {
                        mediaPlayer.setDataSource(path);
                        mediaPlayerState = MP_State.Initialized;
                } catch (IllegalArgumentException e) {
                        Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG).show();
                        e.printStackTrace();
                } catch (IllegalStateException e) {
                        Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG).show();
                        e.printStackTrace();
                } catch (IOException e) {
                        Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG).show();
                        e.printStackTrace();
                }
                cmdPrepare();
                        cmdStart();
        }else{
                Toast.makeText(MainActivity.this, "Invalid cmdSetDataSource - skip", Toast.LENGTH_LONG).show();
        }

    }

private void cmdPrepare(){     
        if(mediaPlayerState == MP_State.Initialized
                ||mediaPlayerState == MP_State.Stopped){
                try {
                        mediaPlayer.prepare();
                        mediaPlayerState = MP_State.Prepared;
                } catch (IllegalStateException e) {
                        Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG).show();
                        e.printStackTrace();
                } catch (IOException e) {
                        Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_LONG).show();
                        e.printStackTrace();
                }
        }else{
                Toast.makeText(MainActivity.this, "Invalid State@cmdPrepare() - skip", Toast.LENGTH_LONG).show();
        }
    }
   
    private void cmdStart(){
        if(mediaPlayerState == MP_State.Prepared
                        ||mediaPlayerState == MP_State.Started
                        ||mediaPlayerState == MP_State.Paused
                        ||mediaPlayerState == MP_State.PlaybackCompleted){
                mediaPlayer.start();
                mediaPlayerState = MP_State.Started;
        }else{
                Toast.makeText(MainActivity.this, "Invalid State@cmdStart() - skip", Toast.LENGTH_LONG).show();
        }

    }


dov'è l'errore???
tutti possiamo programmare...basta volerlo!!!

Offline ilprofugo

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Next
  • Play Store ID:
    Fabrizio Consalvi
Re:sovrapposizione dell'audio...aiuto!!!
« Risposta #1 il: 25 Luglio 2013, 11:41:09 CEST »
0
Secondo me dovresti far fare un controllo sul mediaplayer prima di farlo suonare e se lo trova occupato, prima lo rilascia e poi fa partire quello nuovo.

Qualcosa tipo questo:

Codice (Java): [Seleziona]
                if (mediaPlayer != null) {
                        mediaPlayer .release();
                        mediaPlayer = null;
                }

Offline paul78

  • Utente normale
  • ***
  • Post: 357
  • Respect: +1
    • Mostra profilo
    • Android Code
  • Sistema operativo:
    Linux - Windows
Re:sovrapposizione dell\'audio...aiuto!!!
« Risposta #2 il: 25 Luglio 2013, 12:44:46 CEST »
0
..ho fatto tutti i tipi di controlli!!!!

o mi da errore oppure si sovrappone....aiuto!!!!!

stò impazzendo!!!!!

Post unito: 25 Luglio 2013, 16:44:23 CEST
questo è il controllo che ho inserito...ma si sovrappone lo stesso!!!

Codice (Java): [Seleziona]
link_mp3 = mp3.getText().toString();
                               
                                try {
                                        if (mediaPlayer == null){
                                        mediaPlayer = new MediaPlayer();                               
                               
                                }
                                if (mediaPlayer.isPlaying()) {
                                        mediaPlayer.release();
                                        mediaPlayer = null;                            
                               
                                }
                                        mediaPlayer.reset();
                                        mediaPlayer.setDataSource(link_mp3);
                                        mediaPlayer.prepare();
                                        mediaPlayer.start();                             

                                        buttonPlay.setText("Pause");

                         
                        } catch (IllegalArgumentException e) {
                            e.printStackTrace();
                        } catch (IllegalStateException e) {
                            e.printStackTrace();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }

« Ultima modifica: 25 Luglio 2013, 16:44:23 CEST da paul78, Reason: Merged DoublePost »
tutti possiamo programmare...basta volerlo!!!

Offline ilprofugo

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Next
  • Play Store ID:
    Fabrizio Consalvi
Re:sovrapposizione dell'audio...aiuto!!!
« Risposta #3 il: 25 Luglio 2013, 17:20:53 CEST »
0
Se lo cambi in

Codice (Java): [Seleziona]
link_mp3 = mp3.getText().toString();
                               
                                try {
                                        if (mediaPlayer == null){
                                        mediaPlayer = new MediaPlayer();                              
                               
                                }
                                if (mediaPlayer != null) {
                                        mediaPlayer.release();
                                        mediaPlayer = null;                            
                               
                                }
                                        mediaPlayer.reset();
                                        mediaPlayer.setDataSource(link_mp3);
                                        mediaPlayer.prepare();
                                        mediaPlayer.start();                            

                                        buttonPlay.setText("Pause");

                         
                        } catch (IllegalArgumentException e) {
                            e.printStackTrace();
                        } catch (IllegalStateException e) {
                            e.printStackTrace();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }

cosa succede?

Offline paul78

  • Utente normale
  • ***
  • Post: 357
  • Respect: +1
    • Mostra profilo
    • Android Code
  • Sistema operativo:
    Linux - Windows
Re:sovrapposizione dell\'audio...aiuto!!!
« Risposta #4 il: 25 Luglio 2013, 19:06:35 CEST »
0
...stavo vedendo altre guide...ho trovato una guida con play/pause...ma il problema è sempre lo stesso!!!

ho scritto:

Codice (Java): [Seleziona]
...
link_mp3 = mp3.getText().toString();
                             mediaPlayer = new  MediaPlayer();
                                       
                             initMediaPlayer();

                             switch(stateMediaPlayer){
                                    case stateMP_Error:
                                     break;
                                    case stateMP_NotStarter:
                                     mediaPlayer.start();
                                     buttonPlay.setText("Pause");            
                                     stateMediaPlayer = stateMP_Playing;
                                     break;
                                    case stateMP_Playing:
                                     mediaPlayer.pause();
                                     buttonPlay.setText("Play");
                                     stateMediaPlayer = stateMP_Pausing;
                                     break;
                                    case stateMP_Pausing:
                                     mediaPlayer.start();
                                     buttonPlay.setText("Pause");
                                     stateMediaPlayer = stateMP_Playing;
                                     break;
                                    }
....
 private void initMediaPlayer()
    {
 
     link_mp3 = mp3.getText().toString();
     mediaPlayer = new  MediaPlayer();
               
     try {
            mediaPlayer.setDataSource(link_base);
            mediaPlayer.prepare();
            Toast.makeText(this, link_base, Toast.LENGTH_LONG).show();
            stateMediaPlayer = stateMP_NotStarter;
       
           } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();
            stateMediaPlayer = stateMP_Error;
       
           } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();
            stateMediaPlayer = stateMP_Error;
       
           } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();
            stateMediaPlayer = stateMP_Error;
       
           }

funziona tutto!!!!!

tranne questo piccolo difetto ho anche aggiunto il metodo:

Codice (Java): [Seleziona]
 @Override
    public void onDestroy() {
        if(mediaPlayer != null) {
            mediaPlayer.stop();
            mediaPlayer.release();
            mediaPlayer = null;
        }
        super.onDestroy();
    }

ma niente!!!...stò impazzendo!!!

Post unito: 25 Luglio 2013, 19:35:01 CEST
...ho provato anche con il tuo consiglio....quando clicco mi esce errore!!!

purtroppo il programma lo stò provando direttamente sul tablet!!!!

« Ultima modifica: 25 Luglio 2013, 19:35:01 CEST da paul78, Reason: Merged DoublePost »
tutti possiamo programmare...basta volerlo!!!

Offline gabric

  • Utente senior
  • ****
  • Post: 613
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:sovrapposizione dell'audio...aiuto!!!
« Risposta #5 il: 25 Luglio 2013, 23:10:08 CEST »
0
beh perchè non usi il table tramite eclipse così hai il logcat?
o in alternativa se hai una versione precedente a jelly bean, puoi installare direttamente alogcat.
Ma hai provato semplicemente a far qualcosa del tipo


try{mediaplayer.stop();
catch (Exception e){
e.printstacktrace();
}
mediaplayer = new mediaplayer etc etc

Offline paul78

  • Utente normale
  • ***
  • Post: 357
  • Respect: +1
    • Mostra profilo
    • Android Code
  • Sistema operativo:
    Linux - Windows
Re:sovrapposizione dell'audio...aiuto!!!
« Risposta #6 il: 29 Luglio 2013, 12:03:09 CEST »
0
..ciao  a tutti!!!!


ho cambiato metodo....


ho scritto:

Codice (Java): [Seleziona]
private void startPlay() {
         
            String s = mp3.getText().toString();
            baseText.setText(s);
            seekbar.setProgress(0);
                             
            //player.stop();            
            //player.reset();
            stopPlay();
            try {
                player.setDataSource(s);
                player.prepare();
                player.start();
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalStateException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            //stopPlay();
            seekbar.setMax(player.getDuration());
            playButton.setText("Pause");
             
            updatePosition();
             
            isStarted = true;
    }


ma niente il problema è sempre quello!!!

praticamente nel momento in cui clicco su un'altro mp3 ho il controllo totale sul mp3 nuovo...mentre del precedente mp3 si sente solo l'audio che si sovrappone a quello nuovo!!!!

non riesco a distruggere l'audio precedente!!!

Aiutatemi!!!! :-(


tutti possiamo programmare...basta volerlo!!!

Offline gabric

  • Utente senior
  • ****
  • Post: 613
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:sovrapposizione dell'audio...aiuto!!!
« Risposta #7 il: 29 Luglio 2013, 12:06:31 CEST »
0
mi mostri il codice  di "stopPlay()"

Offline paul78

  • Utente normale
  • ***
  • Post: 357
  • Respect: +1
    • Mostra profilo
    • Android Code
  • Sistema operativo:
    Linux - Windows
Re:sovrapposizione dell'audio...aiuto!!!
« Risposta #8 il: 29 Luglio 2013, 12:23:45 CEST »
0
si certo!!!!


Codice (Java): [Seleziona]
private void stopPlay() {
        player.stop();
        player.reset();
        playButton.setText("Play");
        handler.removeCallbacks(updatePositionRunnable);
        seekbar.setProgress(0);
        isStarted = false;
    }
tutti possiamo programmare...basta volerlo!!!

Offline gabric

  • Utente senior
  • ****
  • Post: 613
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:sovrapposizione dell'audio...aiuto!!!
« Risposta #9 il: 29 Luglio 2013, 12:27:27 CEST »
0
prova con


Codice (Java): [Seleziona]
private void stopPlay() {       if(player.isPlayng()){
        player.stop();        player.release();        playButton.setText("Play");        handler.removeCallbacks(updatePositionRunnable);        seekbar.setProgress(0);         isStarted = false;
}    }

Offline paul78

  • Utente normale
  • ***
  • Post: 357
  • Respect: +1
    • Mostra profilo
    • Android Code
  • Sistema operativo:
    Linux - Windows
Re:sovrapposizione dell\'audio...aiuto!!!
« Risposta #10 il: 29 Luglio 2013, 12:29:29 CEST »
0
all'evento click della playList scrivo:

Codice (Java): [Seleziona]
lv.setOnItemClickListener(new OnItemClickListener() {
                                  @Override
                                  public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
                                          contattiIdText = (TextView) view.findViewById(R.id.contattiIdText);
                                          mp3 = (TextView) view.findViewById(R.id.mp3);
                                         
                                          String valcontattiId = contattiIdText.getText().toString();  
                                          String valMp3 = mp3.getText().toString();    
       
                                         
                                          Intent  objIndent = new Intent(getApplicationContext(), MainActivity.class);
                                          objIndent.putExtra("contattiId", valcontattiId);
                                          objIndent.putExtra("mp3", valMp3);

                                          startActivity(objIndent);
                                  }
                        });


il MainActivity scrivo:

Codice (Java): [Seleziona]
if (this.getIntent().getExtras() != null){
               
                        objIntent = getIntent();
                        contattiId = objIntent.getStringExtra("contattiId");                                   
                        HashMap<String, String> contattiList = controller.getInfoContatti(contattiId);
                                       
                        if(contattiList.size()!=0) {
                                mp3.setText(contattiList.get("mp3"));

                               
                                player = new MediaPlayer();  
                                startPlay();
                               
                        }
                }




Post unito: 29 Luglio 2013, 12:35:04 CEST
ho provato a sostituire il tuo metodo...ma niente!!!

poi...se mi avesse dato degli errori avrei capito + o - dove sbaglio!!!

ma non mi da nessun errore!!!

quello è il problema!!!!
« Ultima modifica: 29 Luglio 2013, 12:35:04 CEST da paul78, Reason: Merged DoublePost »
tutti possiamo programmare...basta volerlo!!!

Offline gabric

  • Utente senior
  • ****
  • Post: 613
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:sovrapposizione dell'audio...aiuto!!!
« Risposta #11 il: 29 Luglio 2013, 15:14:23 CEST »
0
Scusa il ritardo. penso che il problema sia dato dal fatto che tu chiami la listview in un altro intent. Dopo di che richiami l'oncreate del main, perdendo così i riferimenti al precedente mediaplayer che continua la riproduzione

Offline paul78

  • Utente normale
  • ***
  • Post: 357
  • Respect: +1
    • Mostra profilo
    • Android Code
  • Sistema operativo:
    Linux - Windows
Re:sovrapposizione dell\'audio...aiuto!!!
« Risposta #12 il: 29 Luglio 2013, 16:49:18 CEST »
0
...ciao...ad essere sincero ho avuto anch'io questo dubbio!!!!...come faccio a non far perdere il riferimento del mediaplayer precedente ????

sono costretto a mettere la listView in un'altro Activity!!!

mi potresti aiutare???



Post unito: 29 Luglio 2013, 16:53:56 CEST
...ah!!! oppure c'è un metodo dove potrei inserire la listView in un frame laterale di tipo hide/show???

se esiste come si chiama???

così in questo modo semplifico il problema...
« Ultima modifica: 29 Luglio 2013, 16:53:56 CEST da paul78, Reason: Merged DoublePost »
tutti possiamo programmare...basta volerlo!!!

Offline gabric

  • Utente senior
  • ****
  • Post: 613
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Re:sovrapposizione dell'audio...aiuto!!!
« Risposta #13 il: 29 Luglio 2013, 16:54:42 CEST »
0
Uhm allora io creerei un service (c'è la guida qui sul forum) che si occupa della riproduzione in background, e dell'aggiornamento della barra.
Poi dalla seconda activity (quella con la lista) invio le informazioni al service, così lui stoppa una canzone e fa partire la successiva

Offline paul78

  • Utente normale
  • ***
  • Post: 357
  • Respect: +1
    • Mostra profilo
    • Android Code
  • Sistema operativo:
    Linux - Windows
Re:sovrapposizione dell\\\'audio...aiuto!!!
« Risposta #14 il: 29 Luglio 2013, 17:55:51 CEST »
0
...ciao ho visto qualche guida!!!

ma tutte le guide che ho visto fin'ora...quello con l'estensione Service sono tutte di seconde Activity!!!

il mio invece lo dovrei mettere al Main Principale!!!

come faccio???


Post unito: 29 Luglio 2013, 21:15:34 CEST
non riesco a trovare la guida fatta in questo sito!!!

mi potresti dare il link!!??

grazie mille!!!

Post unito: 30 Luglio 2013, 17:10:33 CEST
...il problema non era dal codice scritto male ma dalla tipologia di codice che devo scrivere in base a quello che mi serve...quindi ho risolto inserendo il "Service"...ho dovuto riscrivere quasi del tutto il programma ma in questo modo ho ottenuto quello che mi serviva!!!

grazie mille!!!
« Ultima modifica: 30 Luglio 2013, 17:10:33 CEST da paul78, Reason: Merged DoublePost »
tutti possiamo programmare...basta volerlo!!!