Therefore, you should always take extra precautions to make sure you are not MediaPlayer object, because calling its methods from the wrong state is aĬommon cause of bugs.
In mind when writing code that interacts with a You can move between the Started, Paused and PlaybackCompleted states by At that point, as the diagram illustrates, The MediaPlayer is done preparing, it enters the Prepared After that, you have to prepare it using either the At that point, you should initialize it by calling That clarifies which methods move the MediaPlayer from one state to another.įor example, when you create a new MediaPlayer, it is in the Idle MediaPlayer class shows a complete state diagram, Wrong state, the system may throw an exception or cause other undesirable behaviors. That you must always be aware of when writing your code, because certain operationsĪre only valid when the player is in specific states. That is, the MediaPlayer has an internal state Managing stateĪnother aspect of a MediaPlayer that you should keep in mind is Method of the MediaPlayer.OnPreparedListener, configured through Starts preparing the media in the background and returns immediately. Supplies a convenient way to accomplish this task by using the Yourself, this pattern is so common when using MediaPlayer that the framework Prepare the MediaPlayer and notify the main thread when done. To avoid hanging your UI thread, spawn another thread to The user the impression that your application is slow. Of a second to respond in the UI causes a noticeable pause and gives You expect your resource to load quickly, remember that anything that takes more than a tenth Which is a very bad user experience and can cause an ANR (Application Not Responding) error.
Doing that causes the UI to hang until the method returns, Method that may take long to execute, you should never call it from yourĪpplication's UI thread. It might involve fetching and decoding media data.
Necessary to integrate it correctly with a typical Android application. However, it's important to keep in mind that a few more things are Using MediaPlayer can be straightforward in The file you are referencing might not exist. IllegalArgumentException and IOException when using If you're passing a URL to stream an online media file, the file must be capable of MediaPlayer.prepare() // might take long! (for buffering, etc) MediaPlayer mediaPlayer = new MediaPlayer() Prepare() // might take long! (for buffering, etc) setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
Of how to play audio that's available as a local raw resource (saved in your application's
Currently, that is the mobile device speaker or a Bluetooth headset. Note: You can play back the audio data only to the standard outputĭevice.
Library that supports high-performance features not available in MediaPlayer To use ExoPlayer, which is a customizable open source In the filesystem, or from a data stream arriving over a network connection, all using MediaPlayer APIs.Īpplication that interacts with the user and the system in order to obtain good performance and a Video from media files stored in your application's resources (raw resources), from standalone files That you can easily integrate audio, video and images into your applications. The Android multimedia framework includes support for playing variety of common media types, so