Android Media Player

Presented By
ARIF AKBARUL HUDA
Arif Akbarul Huda
Penulis
Mobile Apps Developer (android)
Trainer

@omayib

75278432

Facebook.com/omayib

omayib@gmail.com

omayib@gmail.com

arul_sip@yahoo.com
My creation....

Available on book store

Coming soon beginning 2014
Jogja.apk
Media Player

Media Player
Media Player
Media Player

Local resources

vs
internal URI

vs
eksternal URL
Some problem....

Some problem....
Some problem....

Low Memory
Some problem....

ERROR
HANDLING
Media Player

About media player
Support file
Basic
Mediaplayer
Audio manager
Using media player
Async preparation
Manage state
release
Background media player
Running
asynchronously
Handling
asynchronous errors
Using wake locks
Running as a
foreground service

Streaming
•
RTSP (RTP, SDP)
•
HTTP/HTTPS progressive streaming
•
HTTP/HTTPS live streaming draft protocol:
•
MPEG-2 TS media files only
•
Protocol version 3 (Android 4.0 and above)
•
Protocol version 2 (Android 3.x)
•
Not supported before Android 3.0
Resources
.3gp.mp4, .m4a,.aac,.mp3,.mid, .xmf, .mxmf,.rtttl, .rtx,.wav,
….
MediaPlayer

About media player
Support file
Basic
Mediaplayer
Audio manager
Using media player
Async preparation
Manage state
release
Background media player
Running
asynchronously
Handling
asynchronous errors
Using wake locks
Running as a
foreground service

MediaPlayer

Audio Manager
MediaPlayer

About media player
Support file
Basic
Mediaplayer

MediaPlayer class can be used to control playback of
audio/video files and streams.

Audio manager
Using media player
Async preparation
Manage state
release
Background media player
Running
asynchronously
Handling
asynchronous errors
Using wake locks
Running as a
foreground service

MediaPlayer
MediaPlayer

About media player
Support file
Basic
Mediaplayer

AudioManager provides access to volume and ringer
mode control

Audio manager
Using media player
Async preparation
Manage state
release
Background media player
Running
asynchronously
Handling
asynchronous errors
Using wake locks
Running as a
foreground service

Audio Manager
MediaPlayer

About media player
Support file
Basic
Mediaplayer
Audio manager

●

Local resources

●

Internal URIs, such as one you might obtain from a

Using media player

Content Resolver

Async preparation
Manage state
release
Background media player
Running
asynchronously
Handling
asynchronous errors
Using wake locks
Running as a
foreground service

●

External URLs (streaming)
MediaPlayer

About media player
Support file
Basic
Mediaplayer
Audio manager
Using media player
Async preparation
Manage state
release
Background media player
Running
asynchronously
Handling
asynchronous errors
Using wake locks
Running as a
foreground service

never call it from your application's UI thread
MediaPlayer

About media player
Support file
Basic
Mediaplayer
Audio manager
Using media player
Async preparation
Manage state
release
Background media player
Running
asynchronously
Handling
asynchronous errors
Using wake locks
Running as a
foreground service
MediaPlayer
MediaPlayer
MediaPlayer
MediaPlayer
MediaPlayer
MediaPlayer
MediaPlayer

About media player
Support file
Basic
Mediaplayer
Audio manager
Using media player
Async preparation

A MediaPlayer can consume
valuable system resources.

you should always take extra precautions to make sure you
are not hanging on to a MediaPlayer instance longer than necessary.

Manage state
release
Background media player
Running
asynchronously
Handling
asynchronous errors
Using wake locks
Running as a
foreground service

mediaPlayer.release();
mediaPlayer = null;
MediaPlayer

About media player
Support file
Basic
Mediaplayer
Audio manager
Using media player
Async preparation
Manage state
release
Background media player
Running
asynchronously
Handling
asynchronous errors
Using wake locks
Running as a
foreground service

Background service
MediaPlayer

About media player
Support file
Basic
Mediaplayer
Audio manager
Using media player
Async preparation
Manage state
release
Background media player
Running
asynchronously
Handling
asynchronous errors
Using wake locks
Running as a
foreground service

Background service
MediaPlayer

About media player
Support file
Basic
Mediaplayer
Audio manager
Using media player

On synchronous operations, errors would normally be
signaled with an exception or an error code, but
whenever you use asynchronous resources, you should
make sure your application is notified of errors
appropriately

Async preparation
Manage state
release
Background media player
Running
asynchronously
Handling
asynchronous errors
Using wake locks
Running as a
foreground service

public class MyService extends Service implements 
MediaPlayer.OnErrorListener {
    MediaPlayer mMediaPlayer;
    public void initMediaPlayer() {
        // ...initialize the MediaPlayer here...
        mMediaPlayer.setOnErrorListener(this);
    }
    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        // ... react appropriately ...
        // The MediaPlayer has moved to the Error state, must be reset!
    }
}

ERROR HANDLING
MediaPlayer

About media player
Support file
Basic
Mediaplayer
Audio manager
Using media player
Async preparation
Manage state
release
Background media player
Running
asynchronously
Handling
asynchronous errors
Using wake locks
Running as a
foreground service

When designing applications that play media in the background, the device may go

Android system
tries to conserve battery while the device is
sleeping, the system tries to shut off any of the phone's features that are not
to sleep while your service is running. Because the

necessary, including the CPU and the WiFi hardware. However, if your service is
playing or streaming music, you want to prevent the system from interfering with
your playback.
mMediaPlayer = new MediaPlayer();
// ... other initialization here ...
mMediaPlayer.setWakeMode(getApplicationContext(), 
PowerManager.PARTIAL_WAKE_LOCK);
MediaPlayer

About media player
Support file
Basic
Mediaplayer
Audio manager
Using media player
Async preparation
Manage state
release
Background media player
Running
asynchronously
Handling
asynchronous errors
Using wake locks
Running as a

String songName;
// assign the song name to songName
PendingIntent pi = PendingIntent.getActivity(getApplicationContext(), 0,
                new Intent(getApplicationContext(), MainActivity.class),
                PendingIntent.FLAG_UPDATE_CURRENT);
Notification notification = new Notification();
notification.tickerText = text;
...
startForeground(NOTIFICATION_ID, notification);

foreground service
stopForeground(true);

Introducing Android Media Player

  • 1.
    Android Media Player PresentedBy ARIF AKBARUL HUDA
  • 2.
    Arif Akbarul Huda Penulis MobileApps Developer (android) Trainer @omayib 75278432 Facebook.com/omayib omayib@gmail.com omayib@gmail.com arul_sip@yahoo.com
  • 3.
    My creation.... Available onbook store Coming soon beginning 2014
  • 4.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
    Media Player About mediaplayer Support file Basic Mediaplayer Audio manager Using media player Async preparation Manage state release Background media player Running asynchronously Handling asynchronous errors Using wake locks Running as a foreground service Streaming • RTSP (RTP, SDP) • HTTP/HTTPS progressive streaming • HTTP/HTTPS live streaming draft protocol: • MPEG-2 TS media files only • Protocol version 3 (Android 4.0 and above) • Protocol version 2 (Android 3.x) • Not supported before Android 3.0 Resources .3gp.mp4, .m4a,.aac,.mp3,.mid, .xmf, .mxmf,.rtttl, .rtx,.wav, ….
  • 13.
    MediaPlayer About media player Supportfile Basic Mediaplayer Audio manager Using media player Async preparation Manage state release Background media player Running asynchronously Handling asynchronous errors Using wake locks Running as a foreground service MediaPlayer Audio Manager
  • 14.
    MediaPlayer About media player Supportfile Basic Mediaplayer MediaPlayer class can be used to control playback of audio/video files and streams. Audio manager Using media player Async preparation Manage state release Background media player Running asynchronously Handling asynchronous errors Using wake locks Running as a foreground service MediaPlayer
  • 15.
    MediaPlayer About media player Supportfile Basic Mediaplayer AudioManager provides access to volume and ringer mode control Audio manager Using media player Async preparation Manage state release Background media player Running asynchronously Handling asynchronous errors Using wake locks Running as a foreground service Audio Manager
  • 16.
    MediaPlayer About media player Supportfile Basic Mediaplayer Audio manager ● Local resources ● Internal URIs, such as one you might obtain from a Using media player Content Resolver Async preparation Manage state release Background media player Running asynchronously Handling asynchronous errors Using wake locks Running as a foreground service ● External URLs (streaming)
  • 17.
    MediaPlayer About media player Supportfile Basic Mediaplayer Audio manager Using media player Async preparation Manage state release Background media player Running asynchronously Handling asynchronous errors Using wake locks Running as a foreground service never call it from your application's UI thread
  • 18.
    MediaPlayer About media player Supportfile Basic Mediaplayer Audio manager Using media player Async preparation Manage state release Background media player Running asynchronously Handling asynchronous errors Using wake locks Running as a foreground service
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
    MediaPlayer About media player Supportfile Basic Mediaplayer Audio manager Using media player Async preparation A MediaPlayer can consume valuable system resources. you should always take extra precautions to make sure you are not hanging on to a MediaPlayer instance longer than necessary. Manage state release Background media player Running asynchronously Handling asynchronous errors Using wake locks Running as a foreground service mediaPlayer.release(); mediaPlayer = null;
  • 26.
    MediaPlayer About media player Supportfile Basic Mediaplayer Audio manager Using media player Async preparation Manage state release Background media player Running asynchronously Handling asynchronous errors Using wake locks Running as a foreground service Background service
  • 27.
    MediaPlayer About media player Supportfile Basic Mediaplayer Audio manager Using media player Async preparation Manage state release Background media player Running asynchronously Handling asynchronous errors Using wake locks Running as a foreground service Background service
  • 28.
    MediaPlayer About media player Supportfile Basic Mediaplayer Audio manager Using media player On synchronous operations, errors would normally be signaled with an exception or an error code, but whenever you use asynchronous resources, you should make sure your application is notified of errors appropriately Async preparation Manage state release Background media player Running asynchronously Handling asynchronous errors Using wake locks Running as a foreground service public class MyService extends Service implements  MediaPlayer.OnErrorListener {     MediaPlayer mMediaPlayer;     public void initMediaPlayer() {         // ...initialize the MediaPlayer here...         mMediaPlayer.setOnErrorListener(this);     }     @Override     public boolean onError(MediaPlayer mp, int what, int extra) {         // ... react appropriately ...         // The MediaPlayer has moved to the Error state, must be reset!     } } ERROR HANDLING
  • 29.
    MediaPlayer About media player Supportfile Basic Mediaplayer Audio manager Using media player Async preparation Manage state release Background media player Running asynchronously Handling asynchronous errors Using wake locks Running as a foreground service When designing applications that play media in the background, the device may go Android system tries to conserve battery while the device is sleeping, the system tries to shut off any of the phone's features that are not to sleep while your service is running. Because the necessary, including the CPU and the WiFi hardware. However, if your service is playing or streaming music, you want to prevent the system from interfering with your playback. mMediaPlayer = new MediaPlayer(); // ... other initialization here ... mMediaPlayer.setWakeMode(getApplicationContext(),  PowerManager.PARTIAL_WAKE_LOCK);
  • 30.
    MediaPlayer About media player Supportfile Basic Mediaplayer Audio manager Using media player Async preparation Manage state release Background media player Running asynchronously Handling asynchronous errors Using wake locks Running as a String songName; // assign the song name to songName PendingIntent pi = PendingIntent.getActivity(getApplicationContext(), 0,                 new Intent(getApplicationContext(), MainActivity.class),                 PendingIntent.FLAG_UPDATE_CURRENT); Notification notification = new Notification(); notification.tickerText = text; ... startForeground(NOTIFICATION_ID, notification); foreground service stopForeground(true);

Editor's Notes

  • #7 public class MyService extends Service implements MediaPlayer.OnPreparedListener { private static final ACTION_PLAY = "com.example.action.PLAY"; MediaPlayer mMediaPlayer = null; public int onStartCommand(Intent intent, int flags, int startId) { ... if (intent.getAction().equals(ACTION_PLAY)) { mMediaPlayer = ... // initialize it here mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.prepareAsync(); // prepare async to not block main thread } } /** Called when MediaPlayer is ready */ public void onPrepared(MediaPlayer player) { player.start(); } }
  • #9 public class MyService extends Service implements MediaPlayer.OnPreparedListener { private static final ACTION_PLAY = "com.example.action.PLAY"; MediaPlayer mMediaPlayer = null; public int onStartCommand(Intent intent, int flags, int startId) { ... if (intent.getAction().equals(ACTION_PLAY)) { mMediaPlayer = ... // initialize it here mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.prepareAsync(); // prepare async to not block main thread } } /** Called when MediaPlayer is ready */ public void onPrepared(MediaPlayer player) { player.start(); } }
  • #11 public class MyService extends Service implements MediaPlayer.OnPreparedListener { private static final ACTION_PLAY = "com.example.action.PLAY"; MediaPlayer mMediaPlayer = null; public int onStartCommand(Intent intent, int flags, int startId) { ... if (intent.getAction().equals(ACTION_PLAY)) { mMediaPlayer = ... // initialize it here mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.prepareAsync(); // prepare async to not block main thread } } /** Called when MediaPlayer is ready */ public void onPrepared(MediaPlayer player) { player.start(); } }
  • #12 public class MyService extends Service implements MediaPlayer.OnPreparedListener { private static final ACTION_PLAY = "com.example.action.PLAY"; MediaPlayer mMediaPlayer = null; public int onStartCommand(Intent intent, int flags, int startId) { ... if (intent.getAction().equals(ACTION_PLAY)) { mMediaPlayer = ... // initialize it here mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.prepareAsync(); // prepare async to not block main thread } } /** Called when MediaPlayer is ready */ public void onPrepared(MediaPlayer player) { player.start(); } }
  • #13 public class MyService extends Service implements MediaPlayer.OnPreparedListener { private static final ACTION_PLAY = "com.example.action.PLAY"; MediaPlayer mMediaPlayer = null; public int onStartCommand(Intent intent, int flags, int startId) { ... if (intent.getAction().equals(ACTION_PLAY)) { mMediaPlayer = ... // initialize it here mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.prepareAsync(); // prepare async to not block main thread } } /** Called when MediaPlayer is ready */ public void onPrepared(MediaPlayer player) { player.start(); } }
  • #29 public class MyService extends Service implements MediaPlayer.OnPreparedListener { private static final ACTION_PLAY = "com.example.action.PLAY"; MediaPlayer mMediaPlayer = null; public int onStartCommand(Intent intent, int flags, int startId) { ... if (intent.getAction().equals(ACTION_PLAY)) { mMediaPlayer = ... // initialize it here mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.prepareAsync(); // prepare async to not block main thread } } /** Called when MediaPlayer is ready */ public void onPrepared(MediaPlayer player) { player.start(); } }
  • #30 public class MyService extends Service implements MediaPlayer.OnPreparedListener { private static final ACTION_PLAY = "com.example.action.PLAY"; MediaPlayer mMediaPlayer = null; public int onStartCommand(Intent intent, int flags, int startId) { ... if (intent.getAction().equals(ACTION_PLAY)) { mMediaPlayer = ... // initialize it here mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.prepareAsync(); // prepare async to not block main thread } } /** Called when MediaPlayer is ready */ public void onPrepared(MediaPlayer player) { player.start(); } }
  • #31 public class MyService extends Service implements MediaPlayer.OnPreparedListener { private static final ACTION_PLAY = "com.example.action.PLAY"; MediaPlayer mMediaPlayer = null; public int onStartCommand(Intent intent, int flags, int startId) { ... if (intent.getAction().equals(ACTION_PLAY)) { mMediaPlayer = ... // initialize it here mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.prepareAsync(); // prepare async to not block main thread } } /** Called when MediaPlayer is ready */ public void onPrepared(MediaPlayer player) { player.start(); } }
  • #32 public class MyService extends Service implements MediaPlayer.OnPreparedListener { private static final ACTION_PLAY = "com.example.action.PLAY"; MediaPlayer mMediaPlayer = null; public int onStartCommand(Intent intent, int flags, int startId) { ... if (intent.getAction().equals(ACTION_PLAY)) { mMediaPlayer = ... // initialize it here mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.prepareAsync(); // prepare async to not block main thread } } /** Called when MediaPlayer is ready */ public void onPrepared(MediaPlayer player) { player.start(); } }
  • #33 public class MyService extends Service implements MediaPlayer.OnPreparedListener { private static final ACTION_PLAY = "com.example.action.PLAY"; MediaPlayer mMediaPlayer = null; public int onStartCommand(Intent intent, int flags, int startId) { ... if (intent.getAction().equals(ACTION_PLAY)) { mMediaPlayer = ... // initialize it here mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.prepareAsync(); // prepare async to not block main thread } } /** Called when MediaPlayer is ready */ public void onPrepared(MediaPlayer player) { player.start(); } }