2012-09-16 7 views
6

Ho un'istanza di Mediaplayer in esecuzione in un servizio in background. Nella mia attività principale ho una vista surfaceview.Come scollegare/rilasciare surfaceview da Android Mediaplayer

Quando viene avviata l'attività e viene creata la vista della super fi cie, eseguo il bind al servizio e imposta la superficie di visualizzazione del mediaplayer sulla vista superficiale dalla mia attività principale. Faccio questo con mPlayer.setSurface(sv.getHolder().getSurface());

Il video viene visualizzato e tutto funziona bene finora. Quando la mia vista superficiale viene distrutta, nel callback surfaceDestroyed() provo a staccare la vista superficiale dal mediaplayer chiamando lo mPlayer.setSurface(null);. Il problema è che quando faccio questo ottengo un errore dal mediaplayer (codice di errore 1).

Quindi la mia domanda è questa, dopo aver impostato un oggetto MediaPlayer e ho impostato la vista superficiale con mPlayer.setSurface(sv.getHolder().getSurface()); c'è un modo per rilasciare o scollegare tale vista senza arrestare o reinizializzare l'oggetto mediaplayer?

Grazie in anticipo.

+0

Cosa cerchi di rimuovere la superficie dal lettore multimediale? – artkoenig

+0

@Artjom cosa sto cercando di fare è questo: se l'utente chiude lo schermo o si allontana dalla mia attività principale, voglio continuare a riprodurre la parte audio del video in background. Se l'utente reentra la mia attività e se una clip è in riproduzione nel mio servizio in background, voglio visualizzare automaticamente il video nella mia vista frontale. C'è un modo per farlo senza fermare o reimpostare l'oggetto MediaPlayer? – ilikekiwis

+0

@ilikekiwis Sto provando a fare la stessa cosa qui. Ti è venuta un'idea ultimamente? – Wesley

risposta

0

È possibile evitare la sospensione della riproduzione quando l'utente si allontana. Questo ti aiuterà a continuare la riproduzione. Ma c'è un altro problema: quando la tua attività/frammento staccato dalla finestra SurfaceView è stato distrutto. Il che significa che devi reinizializzare il lettore multimediale con istanze ricreate di SurfaceView quando l'utente ritorna alla tua app.