Condividi tramite


MediaPlayer Classe

Definizione

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

[Android.Runtime.Register("android/media/MediaPlayer", DoNotGenerateAcw=true)]
public class MediaPlayer : Java.Lang.Object, Android.Media.IAudioRouting, Android.Media.IVolumeAutomation, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("android/media/MediaPlayer", DoNotGenerateAcw=true)>]
type MediaPlayer = class
    inherit Object
    interface IAudioRouting
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface IVolumeAutomation
Ereditarietà
MediaPlayer
Attributi
Implementazioni

Commenti

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

MediaPlayer non è thread-safe. La creazione di e tutto l'accesso alle istanze del lettore deve trovarsi nello stesso thread. Se si registrano callback, il thread deve avere un looper.

Gli argomenti trattati di seguito sono: <ol><li State Diagram<li>>Valid and Invalid States<li Permissions<li>>Register informational and error callbacks</ol>

<div class="special reference"><h3>Developer Guides</h3>

Per altre informazioni su come usare MediaPlayer, vedere la Guida per sviluppatori di Riproduzione multimediale.

</Div>

"StateDiagram"><h3>State Diagram</h3>

Il controllo di riproduzione di file audio/video e flussi viene gestito come macchina a stati. Il diagramma seguente mostra il ciclo di vita e gli stati di un oggetto MediaPlayer basato sulle operazioni di controllo di riproduzione supportate. Gli ovali rappresentano gli stati in cui può risiedere un oggetto MediaPlayer. Gli archi rappresentano le operazioni di controllo di riproduzione che determinano la transizione dello stato dell'oggetto. Esistono due tipi di archi. Gli archi con una singola freccia rappresentano chiamate sincrone al metodo, mentre quelle con una freccia doppia rappresentano chiamate al metodo asincrono.

<img src=".. /.. /.. /images/mediaplayer_state_diagram.gif" alt="Diagramma dello stato di MediaPlayer" border="0" />

Da questo diagramma di stato, è possibile vedere che un oggetto MediaPlayer ha gli stati seguenti:

<ul>li Quando un oggetto MediaPlayer viene appena creato usando new o dopo #reset() viene chiamato, si trova nello <stato em>Inattiva</em>; e dopo #release() viene chiamato, si trova nello <stato em>End</em>.>< Tra questi due stati è il ciclo di vita dell'oggetto MediaPlayer. <ul><li>C'è una differenza sottile ma importante tra un oggetto MediaPlayer appena costruito e l'oggetto MediaPlayer dopo #reset() la chiamata. Si tratta di un errore di programmazione per richiamare metodi come #getCurrentPosition(), #getVideoHeight()#getDuration(), #getVideoWidth(), #setAudioAttributes(AudioAttributes)#start()#pause()#stop()#setLooping(boolean)#setVolume(float, float), #seekTo(long, int)#prepare() o #prepareAsync() nello <stato em>inattivo</em> per entrambi i casi. Se uno di questi metodi viene chiamato subito dopo la costruzione di un oggetto MediaPlayer, l'utente ha fornito il metodo di callback OnErrorListener.onError() non verrà chiamato dal motore del lettore interno e lo stato dell'oggetto rimane invariato; ma se questi metodi vengono chiamati subito dopo #reset(), l'utente ha fornito il metodo di callback OnErrorListener.onError() verrà richiamato dal motore del lettore interno e l'oggetto verrà trasferito allo <stato em>Error</em> . </li><li>È necessario mantenere un riferimento a un'istanza di MediaPlayer per impedire che venga sottoposto a Garbage Collection. Se un'istanza di MediaPlayer viene sottoposto a Garbage Collection, #release verrà chiamato, causando l'arresto di qualsiasi riproduzione in corso. <li>È necessario chiamare una volta #release() completata l'uso di un'istanza per rilasciare risorse acquisite, ad esempio memoria e codec. Dopo aver chiamato #release, non è più necessario interagire con l'istanza rilasciata. <gli oggetti li>MediaPlayer creati con new si trovano nello <stato em>Idle</em> , mentre quelli creati con uno dei metodi pratici create di overload sono <em>NOT</em> nello <stato em>Idle</em> . Infatti, gli oggetti si trovano nello <stato em>Prepared</em> se la creazione tramite create il metodo ha esito positivo. </li></ul></li Li>><In generale, alcune operazioni di controllo della riproduzione potrebbero non riuscire a causa di vari motivi, ad esempio il formato audio/video non supportato, audio/video scarsamente interleaved, risoluzione troppo elevata, timeout di streaming e simili. Pertanto, la segnalazione degli errori e il ripristino sono un problema importante in queste circostanze. A volte, a causa di errori di programmazione, può verificarsi anche una chiamata a un'operazione di controllo di riproduzione in uno stato non valido. In tutte queste condizioni di errore, il motore del lettore interno richiama un utente fornito dal metodo OnErrorListener.onError() se un OnErrorListener è stato registrato in anticipo tramite #setOnErrorListener(android.media.MediaPlayer.OnErrorListener). <ul><li>È importante notare che una volta che si verifica un errore, l'oggetto MediaPlayer entra nello <stato em>Error</em> (tranne quanto indicato in precedenza), anche se un listener di errore non è stato registrato dall'applicazione.</li><li>Per riutilizzare un oggetto MediaPlayer che si trova nello <stato em> Error</em e recuperare dall'errore, #reset() può essere chiamato per ripristinare lo stato em>Idle</em>> dell'oggetto<.</li><li>È consigliabile fare in modo che l'applicazione registri un OnErrorListener per cercare le notifiche di errore dal motore del lettore interno.</li><li>IllegalStateException viene generata per evitare errori di programmazione, ad esempio la chiamata #prepare()a , #prepareAsync()o uno dei metodi di setDataSource overload in uno stato non valido. </li>/ul></li>><Calling #setDataSource(FileDescriptor), o #setDataSource(Context, Uri)#setDataSource(FileDescriptor, long, long)#setDataSource(String)o trasferisce #setDataSource(MediaDataSource) un oggetto MediaPlayer nello <stato em>Idle</em allo <stato em>Initialized</em.>>< <ul><li>Un IllegalStateException viene generato se setDataSource() viene chiamato in qualsiasi altro stato.</li><li>È buona norma di programmazione cercare IllegalArgumentException sempre e IOException che può essere generata dai metodi di setDataSource overload.</li></ul></li li>><Un oggetto MediaPlayer deve prima immettere lo stato em>Prepared</em> prima di poter avviare la <riproduzione. <ul>li Esistono due modi (sincrona o asincrona) che è possibile raggiungere lo <stato em>Prepared/em>: una chiamata a #prepare() (sincrona) che trasferisce l'oggetto allo <stato em>Prepared<</em> una volta restituita la chiamata al metodo oppure una chiamata a #prepareAsync() (asincrona) che trasferisce prima l'oggetto all'em>< Preparing</em>>< stato dopo il ritorno della chiamata (che si verifica quasi subito) mentre il motore del lettore interno continua a lavorare sul resto del lavoro di preparazione fino al completamento del lavoro di preparazione. Al termine della preparazione o al #prepare() termine della chiamata, il motore del lettore interno chiama un metodo di callback fornito dall'utente, onPrepared() dell'interfaccia OnPreparedListener, se un onPreparedListener viene registrato in anticipo tramite #setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener).</li>li È importante notare che lo <stato em>Preparing/em> è uno stato temporaneo e il comportamento di chiamare qualsiasi metodo con effetto collaterale mentre un oggetto MediaPlayer si trova nello <stato em>Preparing<</em> non è definito.<></li><li>An IllegalStateException viene generata se #prepare() o #prepareAsync() viene chiamato in qualsiasi altro stato.</li><li>While nello <stato em>Prepared</em>, proprietà come volume audio/audio, screenOnWhilePlaying, ciclo può essere regolato richiamando i metodi set corrispondenti.</li></ul></li li>><Per avviare la riproduzione, #start() è necessario chiamare . Una volta #start() restituito correttamente, l'oggetto MediaPlayer si trova nello <stato em>Started</em> . #isPlaying() può essere chiamato per verificare se l'oggetto MediaPlayer si trova nello <stato em>Started</em> . <ul>li While nello <stato em>Started</em>, il motore del lettore interno chiama un utente fornito onBufferingUpdateListener.onBufferingUpdate() metodo di callback se un onBufferingUpdateListener è stato registrato in anticipo tramite #setOnBufferingUpdateListener(OnBufferingUpdateListener).>< Questo callback consente alle applicazioni di tenere traccia dello stato di buffering durante lo streaming audio/video.</li><li>Calling #start() non ha alcun effetto su un oggetto MediaPlayer già nello <stato em>Started</em>.<La riproduzione di /li></ul<>/li><li>può essere sospesa e arrestata e la posizione di riproduzione corrente può essere modificata. La riproduzione può essere sospesa tramite #pause(). Al termine della chiamata a #pause() , l'oggetto MediaPlayer entra nello <stato em>Paused</em> . Si noti che la transizione dallo <stato em>Started</em> allo <stato em>Paused</em> e viceversa avviene in modo asincrono nel motore del lettore. Potrebbe essere necessario del tempo prima che lo stato venga aggiornato nelle chiamate a #isPlaying()e può essere un numero di secondi nel caso di contenuto trasmesso in streaming. <ul><li>Calling #start() to resume playback for a paused MediaPlayer object, and the resumed playback position is the same as where it was paused. Quando la chiamata a #start() torna, l'oggetto MediaPlayer sospeso torna allo <stato em>Started</em>.</li><li>Calling #pause() non ha alcun effetto su un oggetto MediaPlayer già nello <stato em>Paused</em>.</li></ul></li>><Calling #stop() arresta la riproduzione e fa sì che mediaPlayer nell'em>< Started</em>, <em>Paused</em>, <em>Prepared </em> or <em>PlaybackCompleted</em> state per entrare nello <stato em>Stopped</em>. <ul><li>Once in the <em>Stopped</em> state, playback cannot be started until #prepare() or #prepareAsync() are called to set the MediaPlayer object to the <em>Prepared</em> state again.</li><li>Calling #stop() non ha alcun effetto su un oggetto MediaPlayer già nello <stato em>Stopped</em>.</li>/ul></li li>><La posizione di riproduzione può essere modificata con una chiamata a #seekTo(long, int).< <ul><li>Anche se la chiamata asincrona #seekTo(long, int) restituisce immediatamente, l'operazione di ricerca effettiva può richiedere un po ' di tempo, soprattutto per l'audio/video trasmesso. Al termine dell'operazione di ricerca effettiva, il motore del lettore interno chiama un utente fornito onSeekComplete.onSeekComplete() se un onSeekCompleteListener è stato registrato in anticipo tramite #setOnSeekCompleteListener(OnSeekCompleteListener).</li><li>Si noti che #seekTo(long, int) può essere chiamato anche negli altri stati, ad esempio <em>Prepared</em>, <em>Paused</em> e <em>PlaybackCompleted </em> state. Quando #seekTo(long, int) viene chiamato in questi stati, verrà visualizzato un fotogramma video se il flusso contiene video e la posizione richiesta è valida. </li><li>Inoltre, la posizione di riproduzione corrente effettiva può essere recuperata con una chiamata a #getCurrentPosition(), utile per applicazioni come un lettore musicale che deve tenere traccia dello stato di riproduzione.</li></ul></li li>><Quando la riproduzione raggiunge la fine del flusso, la riproduzione viene completata. <ul>li Se la modalità di ciclo è stata impostata su <var>true</var> con #setLooping(boolean), l'oggetto MediaPlayer rimarrà nello <stato em>Started</em>.<></li>li Se la modalità di ciclo è stata impostata su <var>false </var>, il motore del lettore chiama un metodo di callback fornito dall'utente, OnCompletion.onCompletion(), se un onCompletionListener viene registrato in anticipo tramite #setOnCompletionListener(OnCompletionListener).>< La chiamata del callback segnala che l'oggetto <si trova ora nello stato em> PlaybackCompleted</em> .</li><li>While nello <stato em>PlaybackCompleted</em> , la chiamata #start() può riavviare la riproduzione dall'inizio dell'origine audio/video.</li></ul>

"Valid_and_Invalid_States"><h3>Stati< validi e non validi/h3>

<table border="0" cellspacing="0" cellpadding="0">tr td>Method Name </p></td td<>td>Valid States </p></td td><>Invalid States </p></td td td>Comments </p></td><></tr><><td>attachAuxEffect </p></td><td>{Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted}</p></td td>><{Idle, Error}</p/><><< td td><>Questo metodo deve essere chiamato dopo setDataSource. La chiamata non modifica lo stato dell'oggetto. </p></td></tr tr><><td>getAudioSessionId </p></td td>><any </p></td><td>{}</p></td td>><Questo metodo può essere chiamato in qualsiasi stato e la chiamata non modifica lo stato dell'oggetto. </p></td></tr tr><<>td>getCurrentPosition </p></td td>><{Idle, Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted}</p></td td><>{Error}</p></td td>><Successful invoke di questo metodo in uno stato valido non modifica lo stato. La chiamata a questo metodo in uno stato non valido trasferisce l'oggetto allo <stato em>Error</em> . </p></td></tr tr><><td>getDuration </p></td td>><{Prepared, Started, Paused, Stopped, PlaybackCompleted}</p></td td>><{Idle, Initialized, Error}</p></td td>><Successful invoke di questo metodo in uno stato valido non modifica lo stato. La chiamata a questo metodo in uno stato non valido trasferisce l'oggetto allo <stato em>Error</em> . </p/td/tr tr><><td>getVideoHeight </p></td td>><{Idle, Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted}</p></td td>><{Error}</p></td td><>Successful invoke di questo metodo in uno stato valido non modifica lo stato.><>< La chiamata a questo metodo in uno stato non valido trasferisce l'oggetto allo <stato em>Error</em> . </p></td></tr tr><><td>getVideoWidth </p></td td>><{Idle, Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted}</p></td td>{Error}</p></td><td>><Successful invoke di questo metodo in uno stato valido non modifica lo stato. La chiamata a questo metodo in uno stato non valido trasferisce l'oggetto allo <stato em>Error</em> . </p></td></tr tr><><td>isPlaying </p></td td>><{Idle, Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted}</p></td td>><{Error}</p></td td td><>Successful invoke di questo metodo in uno stato valido non modifica lo stato. La chiamata a questo metodo in uno stato non valido trasferisce l'oggetto allo <stato em>Error</em> . </p></td></tr tr><<>td>pause </p></td td><>{Started, Paused, PlaybackCompleted}</p></td td><>{Idle, Initialized, Prepared, Stopped, Error}</p></td td td>><Successful invoke of this method in uno stato valido trasferisce l'oggetto <allo stato em>Paused</em.> La chiamata a questo metodo in uno stato non valido trasferisce l'oggetto allo <stato em>Error</em>.</p></td></tr><td><>prepare </p></td td><>{Initialized, Stopped}</p></td td>><{Idle, Prepared, Started, Paused, PlaybackCompleted, Error}</p></td td td>><Successful invoke of this method in uno stato valido trasferisce l'oggetto <allo stato em>Prepared</em.> La chiamata a questo metodo in uno stato non valido genera un'eccezione IllegalStateException.</p></td></tr><tr><td>prepareAsync </p></td td><>{Initialized, Stopped}</p/td>< td><>{Idle, Prepared, Started, Paused, PlaybackCompleted, Error}</p></td td><>Successful invoke di questo metodo in uno stato valido trasferisce l'oggetto <allo stato em>Preparing</em.> La chiamata a questo metodo in uno stato non valido genera un'eccezione IllegalStateException.</p></td></tr tr><><td>release </p></td td>><any </p></td><td>{}<><><> After #release(), non è necessario interagire con l'oggetto . </p></td></tr tr><<>td>reset </p></td td><>{Idle, Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted, Error}</p></td td<>td><>{}<<>> After #reset(), l'oggetto è come appena creato.</p></td></tr tr><><td>seekTo </p></td td>><{Prepared, Started, Paused, PlaybackCompleted}</p></td td>><{Idle, Initialized, Stopped, Error}</p></td td td><>Invoke di questo metodo in uno stato valido non modifica lo stato. La chiamata a questo metodo in uno stato non valido trasferisce l'oggetto allo <stato em>Error</em> . </p></td></tr tr><<>td>setAudioAttributes </p></td td>><{Idle, Initialized, Stopped, Prepared, Started, Paused, PlaybackCompleted}</p></td td><>{Error}</p></td td>><Successful invoke di questo metodo non modifica lo stato. Affinché il tipo di attributi audio di destinazione diventi efficace, questo metodo deve essere chiamato prima di prepare() o prepareAsync().</p></td></tr tr><<>td>setAudioSessionId </p></td td>><{Idle}</p></td td><>{Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted, Error}</p></td td>><Questo metodo deve essere chiamato in stato di inattività come ID sessione audio deve essere noto prima di chiamare setDataSource. La chiamata non modifica lo stato dell'oggetto. </p></td></tr tr><><td>setAudioStreamType (deprecato)</p></td td>><{Idle, Initialized, Stopped, Prepared, Started, Paused, PlaybackCompleted}</p></td td>><{Error}</p></td td td><>Successful invoke di questo metodo non modifica lo stato. Affinché il tipo di flusso audio di destinazione diventi efficace, questo metodo deve essere chiamato prima di prepare() o prepareAsync().</p></td></tr tr><<>td>setAuxEffectSendLevel </p></td td>><any</p></td><td>{}< td/p></td>><Chiamata a questo metodo non modifica lo stato dell'oggetto. </p></td></tr tr><<>td>setDataSource </p></td td>><{Idle}</p></td td><>{Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted, Error}</p></td td>><Successful invoke di questo metodo in uno stato valido trasferisce l'oggetto <allo stato em>Initialized</em.> La chiamata a questo metodo in uno stato non valido genera un'eccezione IllegalStateException.</p></td></tr tr><<>td>setDisplay </p></td td><>any </p></td><td>{}< td/p></td td><>Questo metodo può essere chiamato in qualsiasi stato e la chiamata non modifica lo stato dell'oggetto. </p></td></tr tr><><td>setSurface </p></td td>><any </p></td><td td>{}</p></td td><>Questo metodo può essere chiamato in qualsiasi stato e la chiamata non modifica lo stato dell'oggetto. </p></td></tr tr><<>td>setVideoScalingMode </p></td td>><{Initialized, Prepared, Started, Paused, Stopped, PlaybackCompleted}</p></td td>><{Idle, Error}</p></td td>><Successful invoke di questo metodo non modifica lo stato.</p></td></tr tr><><td>setLooping </p></td td>><{Idle, Initialized, Stopped, Prepared, Started, Paused, PlaybackCompleted}</p></td td>><{Error}</p></td td td><>Successful invoke di questo metodo in uno stato valido non modifica lo stato. La chiamata a questo metodo in uno stato non valido trasferisce l'oggetto allo <stato em>Error</em>.</p></td></tr tr><><td>isLooping </p></td td>><any </p></td><td td>{}</p></td td><>Questo metodo può essere chiamato in qualsiasi stato e la chiamata non modifica lo stato dell'oggetto. </p/td><></tr tr><><td>setOnBufferingUpdateListener </p></td td>><any </p></td td><td>{}</p></td td><>Questo metodo può essere chiamato in qualsiasi stato e la chiamata non modifica lo stato dell'oggetto. </p></td></tr tr><><td>setOnCompletionListener </p></td td><>any </p></td td><td>{}</p></td td><>Questo metodo può essere chiamato in qualsiasi stato e la chiamata non modifica lo stato dell'oggetto. </p></td></tr tr><><td>setOnErrorListener </p></td td>><any </p></td><td>{}</p></td td>><Questo metodo può essere chiamato in qualsiasi stato e la chiamata non modifica lo stato dell'oggetto. </p></td></tr tr><><td>setOnPreparedListener </p></td td><>any </p></td td><td>{}</p></td td><>Questo metodo può essere chiamato in qualsiasi stato e la chiamata non modifica lo stato dell'oggetto. </p></td></tr tr><<>td>setOnSeekCompleteListener </p></td td><>any </p></td><td>{}< td/p></td td><>Questo metodo può essere chiamato in qualsiasi stato e la chiamata non modifica lo stato dell'oggetto. </p></td></tr tr><><td>setPlaybackParams</p></td td><>{Initialized, Prepared, Started, Paused, PlaybackCompleted, Error}</p></td td>><{Idle, Stopped}</p></td td>><Questo metodo cambierà lo stato in alcuni casi, a seconda della chiamata. </p></td></tr tr><><td>setScreenOnWhilePlaying</></td td>><any </p></td><td>{}</p></td td>><Questo metodo può essere chiamato in qualsiasi stato e la chiamata non modifica lo stato dell'oggetto. </p></td></tr tr><<>td>setVolume </p></td td>><{Idle, Initialized, Stopped, Prepared, Started, Paused, PlaybackCompleted}</p></td td><>{Error}</p></td td>><Successful invoke di questo metodo non modifica lo stato. <tr><td>setWakeMode </p></td td>><any </p></td td>{}<>< td/p></td td<>>Questo metodo può essere chiamato in qualsiasi stato e la chiamata non modifica lo stato dell'oggetto.</p></td></tr tr><><td>start </p></td td>><{Prepared, Started, Paused, PlaybackCompleted}</p></td td><>{Idle, Initialized, Stopped, Error}</p/td>< td td>><Successful invoke of this method in uno stato valido trasferisce l'oggetto <allo stato em>Started</em.> La chiamata a questo metodo in uno stato non valido trasferisce l'oggetto allo <stato em>Error</em>.</p/td></tr tr><><td>stop </p></td td>><{Prepared, Started, Stopped, Paused><, PlaybackCompleted}</p></td td>><{Idle, Initialized, Error}</p></td td td>><Successful invoke di questo metodo in uno stato valido trasferisce l'oggetto <allo stato em>Stopped</em.> La chiamata a questo metodo in uno stato non valido trasferisce l'oggetto allo <stato em>Error</em>.</p></td></tr tr><<>td>getTrackInfo </p></td td><>{Prepared, Started, Stopped, Paused, PlaybackCompleted}</p></td td>><{Idle, Initialized, Error}</p></td td>><Successful invoke di questo metodo non modifica lo stato.</p></td></tr tr><<>td>addTimedTextSource </p></td td><>{Prepared, Started, Stopped, Paused, PlaybackCompleted}</p></td td>><{Idle, Initialized, Error}</p></td td>><Successful invoke di questo metodo non modifica lo stato.</p/td/tr><tr><td>selectTrack </p></td td>><{Prepared, Started, Stopped, Paused, PlaybackCompleted}</p></td td><>{Idle, Initialized, Error}</p></td td td>><Successful invoke di questo metodo non modifica lo stato.<><></p></td></tr tr><<>td>deselectTrack </p></td td><>{Prepared, Started, Stopped, Paused, PlaybackCompleted}</p></td td>><{Idle, Initialized, Error}</p></td td>><Successful invoke di questo metodo non modifica lo stato.</p/td><></tr>

</tavolo>

"Autorizzazioni"><h3>Autorizzazioni</h3>

Potrebbe essere necessario dichiarare un elemento di autorizzazione android.R.styleable#AndroidManifestUsesPermission &lt;uses-permission&gt; WAKE_LOCK corrispondente.

Questa classe richiede l'autorizzazione android.Manifest.permission#INTERNET quando viene usata con il contenuto basato sulla rete.

"Callbacks"><h3>Callbacks</h3>

Le applicazioni possono voler eseguire la registrazione per eventi informativi ed di errore per essere informati di alcuni aggiornamenti interni dello stato e di possibili errori di runtime durante la riproduzione o lo streaming. La registrazione per questi eventi viene eseguita correttamente impostando i listener appropriati (tramite chiamate a #setOnPreparedListener(OnPreparedListener) setOnPreparedListener, #setOnCompletionListener(OnCompletionListener) setOnCompletionListener#setOnVideoSizeChangedListener(OnVideoSizeChangedListener) setOnVideoSizeChangedListener#setOnBufferingUpdateListener(OnBufferingUpdateListener) setOnBufferingUpdateListener#setOnSeekCompleteListener(OnSeekCompleteListener) setOnSeekCompleteListener, #setOnInfoListener(OnInfoListener) setOnInfoListener, , #setOnErrorListener(OnErrorListener) setOnErrorListenere così via). Per ricevere il rispettivo callback associato a questi listener, le applicazioni devono creare oggetti MediaPlayer in un thread con il proprio Looper in esecuzione (il thread principale dell'interfaccia utente per impostazione predefinita ha un Looper in esecuzione).

Documentazione java per android.media.MediaPlayer.

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dal progetto Open Source Android e usato in base ai termini descritti nella licenza Creative Commons 2.5 Attribuzione.

Costruttori

MediaPlayer()

Costruttore predefinito.

MediaPlayer(Context)

Costruttore predefinito con contesto.

MediaPlayer(IntPtr, JniHandleOwnership)

Costruttore usato durante la creazione di rappresentazioni gestite di oggetti JNI; chiamato dal runtime.

Campi

MediaErrorIo
Obsoleti.

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

MediaErrorMalformed
Obsoleti.

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

MediaErrorTimedOut
Obsoleti.

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

MediaErrorUnsupported
Obsoleti.

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

MediaMimetypeTextSubrip

Tipo MIME per il contenitore SubRip (SRT).

VideoScalingModeScaleToFit
Obsoleti.

Specifica una modalità di ridimensionamento video.

VideoScalingModeScaleToFitWithCropping
Obsoleti.

Specifica una modalità di ridimensionamento video.

Proprietà

AudioSessionId

Restituisce l'ID sessione audio. -oppure- Imposta l'ID sessione audio.

Class

Restituisce la classe di runtime di questo Objectoggetto .

(Ereditato da Object)
CurrentPosition

Ottiene la posizione di riproduzione corrente.

Duration

Ottiene la durata del file.

Handle

Handle per l'istanza di Android sottostante.

(Ereditato da Object)
IsPlaying

Controlla se MediaPlayer è in riproduzione.

JniIdentityHashCode

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

(Ereditato da Object)
JniPeerMembers

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

Looping

Controlla se MediaPlayer esegue un ciclo o un ciclo diverso. -oppure- Imposta il lettore per il ciclo o il non ciclo.

Metrics

Restituisce i dati delle metriche sul lettore corrente.

PeerReference

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

(Ereditato da Object)
PlaybackParams

Ottiene i parametri di riproduzione, contenente la frequenza di riproduzione corrente. -oppure- Imposta la frequenza di riproduzione usando PlaybackParams.

PreferredDevice

Restituisce l'output selezionato specificato da #setPreferredDevice.

RoutedDevice

Restituisce un'identificazione AudioDeviceInfo del routing corrente di questa nota mediaplayer: la query è valida solo se MediaPlayer è attualmente in riproduzione.

SyncParams

Ottiene la modalità di sincronizzazione A/V. -oppure- Imposta la modalità di sincronizzazione A/V.

ThresholdClass

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

ThresholdType

Questa API supporta l'infrastruttura Mono per Android e non deve essere usata direttamente dal codice.

Timestamp

Ottiene la posizione di riproduzione corrente come .MediaTimestamp

VideoHeight

Restituisce l'altezza del video.

VideoWidth

Restituisce la larghezza del video.

Metodi

AddOnRoutingChangedListener(IAudioRoutingOnRoutingChangedListener, Handler)

Aggiunge un AudioRouting.OnRoutingChangedListener oggetto per ricevere notifiche relative alle modifiche di routing in questo MediaPlayer.

AddTimedTextSource(Context, Uri, String)

Aggiunge un file di origine del testo timed esterno (URI).

AddTimedTextSource(FileDescriptor, Int64, Int64, String)

Aggiunge un file di testo timed esterno (FileDescriptor).

AddTimedTextSource(FileDescriptor, String)

Aggiunge un file di origine del testo timed esterno (FileDescriptor).

AddTimedTextSource(String, String)

Aggiunge un file di origine del testo timed esterno.

AttachAuxEffect(Int32)

Collega un effetto ausiliario al giocatore.

ClearOnMediaTimeDiscontinuityListener()

Cancella il listener impostato in precedenza con #setOnMediaTimeDiscontinuityListener(OnMediaTimeDiscontinuityListener) oppure #setOnMediaTimeDiscontinuityListener(OnMediaTimeDiscontinuityListener, Handler)

ClearOnSubtitleDataListener()

Cancella il listener impostato in precedenza con #setOnSubtitleDataListener(OnSubtitleDataListener) o #setOnSubtitleDataListener(OnSubtitleDataListener, Handler).

Clone()

Crea e restituisce una copia di questo oggetto.

(Ereditato da Object)
Create(Context, Int32)

Metodo pratico per creare un MediaPlayer per un ID risorsa specificato.

Create(Context, Int32, AudioAttributes, Int32)

Stesso metodo factory, #create(Context, int) ma che consente di specificare gli attributi audio e l'ID sessione da usare dalla nuova istanza di MediaPlayer.

Create(Context, Uri)

Metodo pratico per creare un MediaPlayer per un determinato URI.

Create(Context, Uri, ISurfaceHolder)

Metodo pratico per creare un MediaPlayer per un determinato URI.

Create(Context, Uri, ISurfaceHolder, AudioAttributes, Int32)

Stesso metodo factory, #create(Context, Uri, SurfaceHolder) ma che consente di specificare gli attributi audio e l'ID sessione da usare dalla nuova istanza di MediaPlayer.

CreateVolumeShaper(VolumeShaper+Configuration)

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

DeselectTrack(Int32)

Deselezionare una traccia.

Dispose()

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

(Ereditato da Object)
Dispose(Boolean)

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

(Ereditato da Object)
Equals(Object)

Indica se un altro oggetto è "uguale a" questo.

(Ereditato da Object)
GetDrmInfo()

Recupera le informazioni DRM associate all'origine corrente

GetDrmPropertyString(String)

Leggere il valore della proprietà String del plug-in del motore DRM, in base alla stringa del nome della proprietà.

GetHashCode()

Restituisce un valore del codice hash per l'oggetto.

(Ereditato da Object)
GetKeyRequest(Byte[], Byte[], String, MediaDrmKeyType, IDictionary<String,String>)

Uno scambio di richieste/risposte chiave si verifica tra l'app e un server licenze per ottenere o rilasciare chiavi usate per decrittografare il contenuto crittografato.

GetSelectedTrack(MediaTrackType)

Restituisce l'indice della traccia audio, video o sottotitolo attualmente selezionata per la riproduzione, il valore restituito è un indice nella matrice restituita da #getTrackInfo()e può essere usato nelle chiamate a #selectTrack(int) o #deselectTrack(int).

GetTrackInfo()

Restituisce una matrice di informazioni sulla traccia.

JavaFinalize()

Chiamato dal Garbage Collector su un oggetto quando Garbage Collection determina che non sono presenti altri riferimenti all'oggetto .

(Ereditato da Object)
Notify()

Riattiva un singolo thread in attesa del monitor dell'oggetto.

(Ereditato da Object)
NotifyAll()

Riattiva tutti i thread in attesa del monitor dell'oggetto.

(Ereditato da Object)
Pause()

Sospende la riproduzione.

Prepare()

Prepara il lettore per la riproduzione, in modo sincrono.

PrepareAsync()

Prepara il lettore per la riproduzione, in modo asincrono.

PrepareDrm(UUID)

Prepara la tecnologia DRM per l'origine corrente

ProvideKeyResponse(Byte[], Byte[])

Una risposta di chiave viene ricevuta dal server licenze dall'app, quindi viene fornita al plug-in del motore DRM usando provideKeyResponse.

Release()

Rilascia le risorse associate a questo oggetto MediaPlayer.

ReleaseDrm()

Rilascia la sessione DRM

RemoveOnRoutingChangedListener(IAudioRoutingOnRoutingChangedListener)

Rimuove un oggetto AudioRouting.OnRoutingChangedListener che è stato aggiunto in precedenza per ricevere notifiche di reindirizzamento.

Reset()

Reimposta lo stato non inizializzato di MediaPlayer.

RestoreKeys(Byte[])

Ripristinare le chiavi offline persistenti in una nuova sessione.

SeekTo(Int32)

Cerca di specificare la posizione temporale.

SeekTo(Int64, MediaPlayerSeekMode)

Sposta il supporto nella posizione temporale specificata considerando la modalità specificata.

SelectTrack(Int32)

Seleziona una traccia.

SetAudioAttributes(AudioAttributes)

Imposta gli attributi audio per questo MediaPlayer.

SetAudioStreamType(Stream)

Imposta il tipo di flusso audio per questo MediaPlayer.

SetAuxEffectSendLevel(Single)

Imposta il livello di invio del giocatore sull'effetto ausiliario associato.

SetDataSource(AssetFileDescriptor)

Imposta l'origine dati (AssetFileDescriptor) da usare.

SetDataSource(Context, Uri)

Imposta l'origine dati come URI del contenuto.

SetDataSource(Context, Uri, IDictionary<String,String>)

Imposta l'origine dati come URI del contenuto.

SetDataSource(Context, Uri, IDictionary<String,String>, IList<HttpCookie>)

Imposta l'origine dati come URI del contenuto.

SetDataSource(FileDescriptor)

Imposta l'origine dati (FileDescriptor) da usare.

SetDataSource(FileDescriptor, Int64, Int64)

Imposta l'origine dati (FileDescriptor) da usare.

SetDataSource(MediaDataSource)

Imposta l'origine dati (MediaDataSource) da utilizzare.

SetDataSource(String)

Imposta l'origine dati (url file-path o http/rtsp) da usare.

SetDataSourceAsync(AssetFileDescriptor)

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

SetDataSourceAsync(Context, Uri)

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

SetDataSourceAsync(Context, Uri, IDictionary<String,String>)

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

SetDataSourceAsync(Context, Uri, IDictionary<String,String>, IList<HttpCookie>)

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

SetDataSourceAsync(FileDescriptor)

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

SetDataSourceAsync(FileDescriptor, Int64, Int64)

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

SetDataSourceAsync(MediaDataSource)

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

SetDataSourceAsync(String)

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

SetDisplay(ISurfaceHolder)

Imposta l'oggetto SurfaceHolder da utilizzare per visualizzare la parte video del supporto.

SetDrmPropertyString(String, String)

Impostare il valore della proprietà String del plug-in del motore DRM.

SetHandle(IntPtr, JniHandleOwnership)

Imposta la proprietà Handle.

(Ereditato da Object)
SetNextMediaPlayer(MediaPlayer)

Impostare MediaPlayer per iniziare al termine della riproduzione di MediaPlayer (i.

SetOnBufferingUpdateListener(MediaPlayer+IOnBufferingUpdateListener)

Registrare un callback da richiamare quando lo stato del buffer di un flusso di rete è stato modificato.

SetOnCompletionListener(MediaPlayer+IOnCompletionListener)

Registrare un callback da richiamare quando la fine di un'origine multimediale è stata raggiunta durante la riproduzione.

SetOnDrmConfigHelper(MediaPlayer+IOnDrmConfigHelper)

Registrare un callback da richiamare per la configurazione dell'oggetto DRM prima della creazione della sessione.

SetOnDrmInfoListener(MediaPlayer+IOnDrmInfoListener)

Registrare un callback da richiamare quando le informazioni DRM sono note.

SetOnDrmInfoListener(MediaPlayer+IOnDrmInfoListener, Handler)

Registrare un callback da richiamare quando le informazioni DRM sono note.

SetOnDrmPreparedListener(MediaPlayer+IOnDrmPreparedListener)

Registrare un callback da richiamare quando l'oggetto DRM viene preparato.

SetOnDrmPreparedListener(MediaPlayer+IOnDrmPreparedListener, Handler)

Registrare un callback da richiamare quando l'oggetto DRM viene preparato.

SetOnErrorListener(MediaPlayer+IOnErrorListener)

Registrare un callback da richiamare quando si è verificato un errore durante un'operazione asincrona.

SetOnInfoListener(MediaPlayer+IOnInfoListener)

Registrare un callback da richiamare quando sono disponibili informazioni/avvisi.

SetOnMediaTimeDiscontinuityListener(MediaPlayer+IOnMediaTimeDiscontinuityListener)

Imposta il listener da richiamare quando viene rilevata una discontinuità del tempo multimediale.

SetOnMediaTimeDiscontinuityListener(MediaPlayer+IOnMediaTimeDiscontinuityListener, Handler)

Imposta il listener da richiamare quando viene rilevata una discontinuità del tempo multimediale.

SetOnPreparedListener(MediaPlayer+IOnPreparedListener)

Registrare un callback da richiamare quando l'origine multimediale è pronta per la riproduzione.

SetOnSeekCompleteListener(MediaPlayer+IOnSeekCompleteListener)

Registrare un callback da richiamare quando è stata completata un'operazione di ricerca.

SetOnSubtitleDataListener(MediaPlayer+IOnSubtitleDataListener)

Imposta il listener da richiamare quando una traccia del sottotitolo dispone di nuovi dati disponibili.

SetOnSubtitleDataListener(MediaPlayer+IOnSubtitleDataListener, Handler)

Imposta il listener da richiamare quando una traccia del sottotitolo dispone di nuovi dati disponibili.

SetOnTimedMetaDataAvailableListener(MediaPlayer+IOnTimedMetaDataAvailableListener)

Registrare un callback da richiamare quando una traccia selezionata ha timeizzato i metadati disponibili.

SetOnTimedTextListener(MediaPlayer+IOnTimedTextListener)

Registrare un callback da richiamare quando è disponibile un testo timed per la visualizzazione.

SetOnVideoSizeChangedListener(MediaPlayer+IOnVideoSizeChangedListener)

Registrare un callback da richiamare quando le dimensioni del video sono note o aggiornate.

SetPreferredDevice(AudioDeviceInfo)

Specifica un dispositivo audio (tramite un AudioDeviceInfo oggetto) per instradare l'output da questo MediaPlayer.

SetScreenOnWhilePlaying(Boolean)

Controllare se è necessario usare il SurfaceHolder collegato per mantenere attivo lo schermo durante la riproduzione video.

SetSurface(Surface)

Imposta l'oggetto Surface da utilizzare come sink per la parte video del supporto.

SetVideoScalingMode(VideoScalingMode)

Imposta la modalità di ridimensionamento video.

SetVolume(Single, Single)

Imposta il volume su questo lettore.

SetWakeMode(Context, WakeLockFlags)

Impostare il comportamento di risparmio energia di basso livello per questo MediaPlayer.

Start()

Avvia o riprende la riproduzione.

Stop()

Arresta la riproduzione dopo l'avvio o la sospensione della riproduzione.

ToArray<T>()

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

(Ereditato da Object)
ToString()

Restituisce una rappresentazione di stringa dell'oggetto.

(Ereditato da Object)
UnregisterFromRuntime()

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

(Ereditato da Object)
Wait()

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo <>una notifica</em> o <em>interrotto</em>.

(Ereditato da Object)
Wait(Int64)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo>< una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

(Ereditato da Object)
Wait(Int64, Int32)

Fa sì che il thread corrente attenda finché non viene risvegliato, in genere ricevendo>< una notifica</em> o <em>interrotto</em> o fino a quando non è trascorsa una determinata quantità di tempo reale.

(Ereditato da Object)

Eventi

BufferingUpdate

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

Completion

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

DrmInfoEvent

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

DrmPrepared

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

Error

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

Info

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

MediaTimeDiscontinuity

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

Prepared

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

RoutingChanged

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

SeekComplete

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

SubtitleData

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

TimedMetaDataAvailable

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

TimedText

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

VideoSizeChanged

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

Implementazioni dell'interfaccia esplicita

IJavaPeerable.Disposed()

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

(Ereditato da Object)
IJavaPeerable.DisposeUnlessReferenced()

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

(Ereditato da Object)
IJavaPeerable.Finalized()

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

(Ereditato da Object)
IJavaPeerable.JniManagedPeerState

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

(Ereditato da Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

(Ereditato da Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

(Ereditato da Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

(Ereditato da Object)

Metodi di estensione

JavaCast<TResult>(IJavaObject)

Esegue una conversione del tipo di tipo controllato dal runtime Android.

JavaCast<TResult>(IJavaObject)

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

GetJniTypeName(IJavaPeerable)

La classe MediaPlayer può essere usata per controllare la riproduzione di file e flussi audio/video.

Si applica a