Saturday, August 14, 2010

Android Media Player

The exercise play, pause and stop a mp3 file in /res/raw folder, using android.media.MediaPlayer.



First of all, copy a mp3 file in /res/raw folder.



main.xml
 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
<TextView
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="@string/hello"
  />
<Button
  android:id="@+id/playpause"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="Play"
  />
<Button
  android:id="@+id/quit"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:text="Quit!"
  />
<TextView
  android:id="@+id/state"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  />
</LinearLayout>



AndroidMediaPlayer.java
 

package com.exercise.AndroidMediaPlayer;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class AndroidMediaPlayer extends Activity {
 
 MediaPlayer mediaPlayer;
 Button buttonPlayPause, buttonQuit;
 TextView textState;
 
 private int stateMediaPlayer;
 private final int stateMP_NotStarter = 0;
 private final int stateMP_Playing = 1;
 private final int stateMP_Pausing = 2;
 
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
    
      buttonPlayPause = (Button)findViewById(R.id.playpause);
      buttonQuit = (Button)findViewById(R.id.quit);
      textState = (TextView)findViewById(R.id.state);
    
      buttonPlayPause.setOnClickListener(buttonPlayPauseOnClickListener);
      buttonQuit.setOnClickListener(buttonQuitOnClickListener);
    
      initMediaPlayer();
    
  }

  private void initMediaPlayer()
  {
   mediaPlayer = new  MediaPlayer();
      mediaPlayer = MediaPlayer.create(AndroidMediaPlayer.this, R.raw.music);
      stateMediaPlayer = stateMP_NotStarter;
      textState.setText("- IDLE -");
  }

  Button.OnClickListener buttonPlayPauseOnClickListener
   = new Button.OnClickListener(){

   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    switch(stateMediaPlayer){
    case stateMP_NotStarter:
     mediaPlayer.start();
     buttonPlayPause.setText("Pause");
     textState.setText("- PLAYING -");
     stateMediaPlayer = stateMP_Playing;
     break;
    case stateMP_Playing:
     mediaPlayer.pause();
     buttonPlayPause.setText("Play");
     textState.setText("- PAUSING -");
     stateMediaPlayer = stateMP_Pausing;
     break;
    case stateMP_Pausing:
     mediaPlayer.start();
     buttonPlayPause.setText("Pause");
     textState.setText("- PLAYING -");
     stateMediaPlayer = stateMP_Playing;
     break;
    }
    
   }
  };

  Button.OnClickListener buttonQuitOnClickListener
 = new Button.OnClickListener(){

  @Override
  public void onClick(View v) {
   // TODO Auto-generated method stub
   mediaPlayer.stop();
   mediaPlayer.release();
   finish();
  } 
  };
}