Autore Topic: MediaPlayer error (-19,0)  (Letto 1380 volte)

Offline stepic77

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung S 9003
  • Sistema operativo:
    XP
MediaPlayer error (-19,0)
« il: 22 Agosto 2012, 15:22:15 CEST »
0
Ciao ragazzi, ho un problema con in MediaPlayer.
Quando premo ripetutamente il bottone per avviare un mp3 selezionato (dopo una ventina di volte), tutti gli mp3 vengono sovrapposti (ad ogni click ovviamente) e la procedura va in errore. Forse devo controllare (non so come) e stoppare un MediaPlayer precedentemente avviato?

LogCat
08-22 11:21:18.218: E/MediaPlayer(717): Error (-19,0)



Codice (Java): [Seleziona]
 public void onClick(View v) {
              MediaPlayer mp = new MediaPlayer();  
                          try {                                                        
                                  int Mp3Id = getResources().getIdentifier(arr[3],"raw",getPackageName());     
                                  AssetFileDescriptor afd = getResources().openRawResourceFd(Mp3Id);                                           
                                  mp.reset();
                                  mp.setDataSource(afd.getFileDescriptor());
                                  afd.close();
                                  mp.prepare();
                                  mp.start();
                                                                                                                       
                          } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                          }          
            }
});





Offline stepic77

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung S 9003
  • Sistema operativo:
    XP
Re:MediaPlayer error (-19,0)
« Risposta #1 il: 22 Agosto 2012, 15:40:58 CEST »
0
Ho risolto con la funzione isPlaying() prima di avviare tutto.

Codice (Java): [Seleziona]
if(!mp.isPlaying()){


Ora ho un altro problema, sulla parte

Codice (Java): [Seleziona]
int Mp3Id = getResources().getIdentifier(arr[3],"raw",getPackageName());      
AssetFileDescriptor afd = getResources().openRawResourceFd(Mp3Id);

pensavo che Mp3Id fosse l'id il singolo file... (arr[3] è il nome del file fisico mp3), invece è l'id della cartella, in automatico partono tutti gli mp3 di tutta la cartella raw.
Come posso specificare il singolo mp3?

« Ultima modifica: 22 Agosto 2012, 17:59:47 CEST da stepic77 »

Offline stepic77

  • Nuovo arrivato
  • *
  • Post: 4
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung S 9003
  • Sistema operativo:
    XP
Avvio singolo mp3
« Risposta #2 il: 06 Settembre 2012, 12:53:58 CEST »
0
Ciao a tutti, sono sempre io..
Ho risolto il mio problema col mediaplayer (avvio di un singolo mp3).

Dopo aver preso l'id del file..
Codice (Java): [Seleziona]
int Mp3Id = getResources().getIdentifier(arr[3],"raw",getPackageName());       

Al setDataSource del mediaplayer, passo oltre il FileDescriptor anche StartOffset() ed il Length() dell'AssetFileDescriptor.

Codice (Java): [Seleziona]
AssetFileDescriptor afd = getResources().openRawResourceFd(Mp3Id);                                                                                               
FileDescriptor fd = afd.getFileDescriptor();
mp.setDataSource(fd,afd.getStartOffset(), afd.getLength());


Per ricavare l'id del file, ho trovato quest'ottimo articolo
http://www.anddev.org/mediaplayersetdatasourceurl_not_working-t5524.html

Offline RogoMantiK

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Xperia Neo
Re:MediaPlayer error (-19,0)
« Risposta #3 il: 05 Novembre 2012, 22:25:13 CET »
0
ciao ti faccio una domanda perché io ho avuto problemi con errori di tipo nullpointer appunto con mediaplayer
al momento sto usando questo sintassi per eseguire gli mp3
Codice (Java): [Seleziona]
                resId = getResources().getIdentifier(nomeFile, "raw", getPackageName());
                audio = MediaPlayer.create(context, resId);
                audio.setAudioStreamType(AudioManager.STREAM_MUSIC);
                audio.setLooping(false);
try {
                        audio.prepare();
                } catch (IllegalStateException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                audio.start();

per il bottone di stop
Codice (Java): [Seleziona]
if (audio.isPlaying()) {
                                audio.stop();
                        }
                        audio = MediaPlayer.create(context, resId); //per caricare un'altro mp3 (con resid nuovo)

l'errore lo ricevevo prima di aggiungere la parte
audio.prepare();
con relativi try/catch

con i FileDescriptor ti trovi bene?
« Ultima modifica: 05 Novembre 2012, 22:27:33 CET da RogoMantiK »