MediaPlayer is implemented at the underlying layer based on the OpenCore (PacketVideo) Library. To build a MediaPlayer program, the upper layer also contains inter-process communication and other content, the basis for inter-process communication is the Binder Mechanism in the basic Android library.
In today's example, we only use MediaPlayer to play a beautiful English brother love foolton In the res/raw folder. The program has three ImageButton buttons, play, stop, and pause! I don't need to talk about the functions of the three buttons. Next I will show you how to implement this Demo By Step.
Step 1: Create an Android project named MediaPlayerDemo.
Step 2: import the play.png, pause.png, and stop.png files to the res/drawable folder.
Step 3: design the UI layout and put three ImageButton in main. xml (here we can use AbsoluteLayout or RelativeLayout, I will use the latter). The Code is as follows:
[Html]
<SPAN style = "COLOR: # cc6600; FONT-SIZE: 12px"> <? Xml version = "1.0" encoding = "UTF-8"?>
<RelativeLayout
Android: layout_width = "fill_parent"
Android: layout_height = "fill_parent"
Android: background = "@ drawable/white"
Xmlns: android = "http://schemas.android.com/apk/res/android"
>
<TextView
Android: id = "@ + id/myTextView1"
Android: layout_width = "wrap_content"
Android: layout_height = "wrap_content"
Android: text = "@ string/hello"
Android: layout_alignParentTop = "true"
Android: layout_alignParentLeft = "true"
>
</TextView>
<ImageButton
Android: id = "@ + id/myButton1"
Android: layout_width = "wrap_content"
Android: layout_height = "wrap_content"
Android: src = "@ drawable/play"
Android: layout_below = "@ + id/myTextView1"
>
</ImageButton>
<ImageButton
Android: id = "@ + id/myButton3"
Android: layout_width = "wrap_content"
Android: layout_height = "wrap_content"
Android: src = "@ drawable/pause"
Android: layout_alignTop = "@ + id/myButton1"
Android: layout_toRightOf = "@ + id/myButton1"
>
</ImageButton>
<ImageButton
Android: id = "@ + id/myButton2"
Android: layout_width = "wrap_content"
Android: layout_height = "wrap_content"
Android: src = "@ drawable/stop"
Android: layout_alignTop = "@ + id/myButton1"
Android: layout_toRightOf = "@ + id/myButton3"
>
</ImageButton>
</RelativeLayout>
</SPAN>
<? Xml version = "1.0" encoding = "UTF-8"?>
<RelativeLayout
Android: layout_width = "fill_parent"
Android: layout_height = "fill_parent"
Android: background = "@ drawable/white"
Xmlns: android = "http://schemas.android.com/apk/res/android"
>
<TextView
Android: id = "@ + id/myTextView1"
Android: layout_width = "wrap_content"
Android: layout_height = "wrap_content"
Android: text = "@ string/hello"
Android: layout_alignParentTop = "true"
Android: layout_alignParentLeft = "true"
>
</TextView>
<ImageButton
Android: id = "@ + id/myButton1"
Android: layout_width = "wrap_content"
Android: layout_height = "wrap_content"
Android: src = "@ drawable/play"
Android: layout_below = "@ + id/myTextView1"
>
</ImageButton>
<ImageButton
Android: id = "@ + id/myButton3"
Android: layout_width = "wrap_content"
Android: layout_height = "wrap_content"
Android: src = "@ drawable/pause"
Android: layout_alignTop = "@ + id/myButton1"
Android: layout_toRightOf = "@ + id/myButton1"
>
</ImageButton>
<ImageButton
Android: id = "@ + id/myButton2"
Android: layout_width = "wrap_content"
Android: layout_height = "wrap_content"
Android: src = "@ drawable/stop"
Android: layout_alignTop = "@ + id/myButton1"
Android: layout_toRightOf = "@ + id/myButton3"
>
</ImageButton>
</RelativeLayout>
Step 4: implement the main control program MediaPlayerDemo. java. The Code is as follows:
[Java] view plaincopyprint?
<SPAN style = "COLOR: # cc6600; FONT-SIZE: 12px"> package com. android. test;
Import android. app. Activity;
Import android. media. MediaPlayer;
Import android. OS. Bundle;
Import android. view. View;
Import android. widget. ImageButton;
Import android. widget. TextView;
Public class MediaPlayerDemo extends Activity {
Private ImageButton mb1, mb2, mb3;
Private TextView TV;
Private MediaPlayer mp;
// Declare a variable to determine whether it is paused. The default value is false.
Private boolean isPaused = false;
Public void onCreate (Bundle savedInstanceState ){
Super. onCreate (savedInstanceState );
SetContentView (R. layout. main );
// Find the resource through findViewById
Mb1 = (ImageButton) findViewById (R. id. myButton1 );
Mb2 = (ImageButton) findViewById (R. id. myButton2 );
Mb3 = (ImageButton) findViewById (R. id. myButton3 );
TV = (TextView) findViewById (R. id. myTextView1 );
// Create a mediaplayerobject to folder the lovefool.pdf
Mp = MediaPlayer. create (this, R. raw. lovefool );
// Adds a music play button event.
Mb1.setOnClickListener (new ImageButton. OnClickListener (){
@ Override
Public void onClick (View v ){
Try {
If (mp! = Null)
{
Mp. stop ();
}
Mp. prepare ();
Mp. start ();
TV. setText ("playing music ...");
} Catch (Exception e ){
TV. setText ("an exception occurred during playback ...");
E. printStackTrace ();
}
}
});
Mb2.setOnClickListener (new ImageButton. OnClickListener (){
@ Override
Public void onClick (View v ){
Try {
If (mp! = Null)
{
Mp. stop ();
TV. setText ("Stop playing music ...");
}
} Catch (Exception e ){
TV. setText ("an exception occurred when music stops ...");
E. printStackTrace ();
}
}
});
Mb3.setOnClickListener (new ImageButton. OnClickListener (){
@ Override
Public void onClick (View v ){
Try {
If (mp! = Null)
{
If (isPaused = false)
{
Mp. pause ();
IsPaused = true;
TV. setText ("Stop playing! ");
}
Else if (isPaused = true)
{
Mp. start ();
IsPaused = false;
TV. setText ("start broadcasting! ");
}
}
} Catch (Exception e ){
TV. setText ("an exception occurred ...");
E. printStackTrace ();
}
}
});
/* When MediaPlayer. OnCompletionLister runs the Listener */
Mp. setOnCompletionListener (
New MediaPlayer. OnCompletionListener ()
{
// @ Override
/* Overwrite file broadcast completion event */
Public void onCompletion (MediaPlayer arg0)
{
Try
{
/* Unassign values between resources and MediaPlayer.
* Allow resources to be used by other programs */
Mp. release ();
/* Change TextView to end playback */
TV. setText ("music broadcasting ends! ");
}
Catch (Exception e)
{
TV. setText (e. toString ());
E. printStackTrace ();
}
}
});
/* When MediaPlayer. OnErrorListener runs the Listener */
Mp. setOnErrorListener (new MediaPlayer. OnErrorListener ()
{
@ Override
/* Overwrite the error handling event */
Public boolean onError (MediaPlayer arg0, int arg1, int arg2)
{
// TODO Auto-generated method stub
Try
{
/* Release the resource and MediaPlayer assignment when an error occurs */
Mp. release ();
TV. setText ("an exception occurred during playback! ");
}
Catch (Exception e)
{
TV. setText (e. toString ());
E. printStackTrace ();
}
Return false;
}
});
}
}
</SPAN>
Package com. android. test;
Import android. app. Activity;
Import android. media. MediaPlayer;
Import android. OS. Bundle;
Import android. view. View;
Import android. widget. ImageButton;
Import android. widget. TextView;
Public class MediaPlayerDemo extends Activity {
Private ImageButton mb1, mb2, mb3;
Private TextView TV;
Private MediaPlayer mp;
// Declare a variable to determine whether it is paused. The default value is false.
Private boolean isPaused = false;
Public void onCreate (Bundle savedInstanceState ){
Super. onCreate (savedInstanceState );
SetContentView (R. layout. main );
// Find the resource through findViewById
Mb1 = (ImageButton) findViewById (R. id. myButton1 );
Mb2 = (ImageButton) findViewById (R. id. myButton2 );
Mb3 = (ImageButton) findViewById (R. id. myButton3 );
TV = (TextView) findViewById (R. id. myTextView1 );
// Create a mediaplayerobject to folder the lovefool.pdf
Mp = MediaPlayer. create (this, R. raw. lovefool );
// Adds a music play button event.
Mb1.setOnClickListener (new ImageButton. OnClickListener (){
@ Override
Public void onClick (View v ){
Try {
If (mp! = Null)
{
Mp. stop ();
}
Mp. prepare ();
Mp. start ();
TV. setText ("playing music ...");
} Catch (Exception e ){
TV. setText ("an exception occurred during playback ...");
E. printStackTrace ();
}
}
});
Mb2.setOnClickListener (new ImageButton. OnClickListener (){
@ Override
Public void onClick (View v ){
Try {
If (mp! = Null)
{
Mp. stop ();
TV. setText ("Stop playing music ...");
}
} Catch (Exception e ){
TV. setText ("an exception occurred when music stops ...");
E. printStackTrace ();
}
}
});
Mb3.setOnClickListener (new ImageButton. OnClickListener (){
@ Override
Public void onClick (View v ){
Try {
If (mp! = Null)
{
If (isPaused = false)
{
Mp. pause ();
IsPaused = true;
TV. setText ("Stop playing! ");
}
Else if (isPaused = true)
{
Mp. start ();
IsPaused = false;
TV. setText ("start broadcasting! ");
}
}
} Catch (Exception e ){
TV. setText ("an exception occurred ...");
E. printStackTrace ();
}
}
});
/* When MediaPlayer. OnCompletionLister runs the Listener */
Mp. setOnCompletionListener (
New MediaPlayer. OnCompletionListener ()
{
// @ Override
/* Overwrite file broadcast completion event */
Public void onCompletion (MediaPlayer arg0)
{
Try
{
/* Unassign values between resources and MediaPlayer.
* Allow resources to be used by other programs */
Mp. release ();
/* Change TextView to end playback */
TV. setText ("music broadcasting ends! ");
}
Catch (Exception e)
{
TV. setText (e. toString ());
E. printStackTrace ();
}
}
});
/* When MediaPlayer. OnErrorListener runs the Listener */
Mp. setOnErrorListener (new MediaPlayer. OnErrorListener ()
{
@ Override
/* Overwrite the error handling event */
Public boolean onError (MediaPlayer arg0, int arg1, int arg2)
{
// TODO Auto-generated method stub
Try
{
/* Release the resource and MediaPlayer assignment when an error occurs */
Mp. release ();
TV. setText ("an exception occurred during playback! ");
}
Catch (Exception e)
{
TV. setText (e. toString ());
E. printStackTrace ();
}
Return false;
}
});
}
}
Step 5: The running effect is as follows. A beautiful love fool is playing... enjoy...
Diffusion learning:
If we want to play the music in the mobile phone card or download the streaming media from the URL, the Programme is as follows:
[Java]
<SPAN style = "COLOR: # cc6600; FONT-SIZE: 12px"> MediaPlayer mp = new MediaPlayer ();
Mp. setDataSource (String URL/FILE_PATH );
Mp. prepare ();
Mp. start (); </SPAN>
MediaPlayer mp = new MediaPlayer ();
Mp. setDataSource (String URL/FILE_PATH );
Mp. prepare ();
Mp. start ();
The preceding procedure uses the MediaPlayer. setDataSource () method to pass the URL or file path as a string. When using the setDataSource () method, pay attention to the following three points:
1. The constructed MediaPlayer must implement a Null check on the image.
2. exceptions such as IllegalArgumentException and IOException must be received. In many cases, the files you use do not exist.
3. If you use a URL to play an online media file, the file must support pragressive download.