Senin, 07 Oktober 2013

Aplikasi Pemutar Musik

Pada bagian ini kita akan membuat aplikasi android yang berfungsi seperti untuk memutar file audio/lagu.
Persiapkan tiga buah icon seperti berikut:


untuk image button memainkan lagu.
           
 untuk image button pause lagu.
   
 untuk amage button mematikan lagu.


Gambaran untuk desain aplikasi ini adalah seperti berikut:
     
Kita memerlukan import media player android untuk dapat memainkan musik di android. Import tersebut adalah sebagai berikut.
import android.media.MediaPlayer;

dan kita dalam coding menggunakan teknik implements serta mendefinisikan variabel sebagai Media Players seperti coding berikut:
public class music extends Activity
      implements MediaPlayer.OnCompletionListener {
      private ImageButton play;
      private ImageButton pause;
      private ImageButton stop;
      private MediaPlayer mp;

sementara untuk melakukan inisialisasi icon dengan fungsi play, pause, stop serta inisialisasi click terhadap icon didefinisikan seperti berikut:
      public void onCreate(Bundle icicle) {
            super.onCreate(icicle);
            setContentView(R.layout.main);
           
            play=(ImageButton)findViewById(R.id.play);
            pause=(ImageButton)findViewById(R.id.pause);
            stop=(ImageButton)findViewById(R.id.stop);
           
            play.setOnClickListener(new View.OnClickListener() {
                  public void onClick(View view) {
                        play();
                  }
            });
           
            pause.setOnClickListener(new View.OnClickListener() {
                  public void onClick(View view) {
                        pause();
                  }
            });
           
            stop.setOnClickListener(new View.OnClickListener() {
                  public void onClick(View view) {
                        stop();
                  }
            });
           
            setup();
      }


sementa method setup() berisi seperti berikut:
      private void setup() {
            loadClip();
            play.setEnabled(true);
            pause.setEnabled(false);
            stop.setEnabled(false);
      }


sementara untuk meng-handle apabila dilakukan click terhadap icon akan memanggil salah satu fungsi-fungsi berikut:
      private void play() {
            mp.start();
           
            play.setEnabled(false);
            pause.setEnabled(true);
            stop.setEnabled(true);
      }
     
      private void stop() {
            mp.stop();
            pause.setEnabled(false);
            stop.setEnabled(false);
           
            try {
                  mp.prepare();
                  mp.seekTo(0);
                  play.setEnabled(true);
            }
            catch (Throwable t) {
                  goBlooey(t);
            }
      }
     
      private void pause() {
            mp.pause();
           
            play.setEnabled(true);
            pause.setEnabled(false);
            stop.setEnabled(true);
      }
     


Masukkan file mp3 ke dalam foleder raw di project android kita dan akan di-load dengan fungsi seperti berikut: 
      private void loadClip() {
            try {
                  mp=MediaPlayer.create(this, R.raw.himne_mdp);
                  mp.setOnCompletionListener(this);
            }
            catch (Throwable t) {
                  goBlooey(t);
            }
      }

Dari coding di atas bahwa sample mp3 yang akan di-load adalah mp3 dengan nama file himne_mdp. Apabila Anda ingin mengganti bisa dengan memasukkan file mp3 yang anda sukai.
Berdasarkan layout tampilan aplikasi pemutar musik di atas, kita memerlukan tiga definisi image button dalam layout xml kita yaitu:

ImageButton Play
            <ImageButton android:id="@+id/play"
                  android:src="@drawable/play"
                  android:layout_height="wrap_content"
                  android:layout_width="wrap_content"
                  android:paddingRight="4px"
                  android:enabled="false"/>

ImageButton Pause
            <ImageButton android:id="@+id/pause"
                  android:src="@drawable/pause"
                  android:layout_height="wrap_content"
                  android:layout_width="wrap_content"
                  android:paddingRight="4px"/>

ImageButton Stop
            <ImageButton android:id="@+id/stop"
                  android:src="@drawable/stop"
                  android:layout_height="wrap_content"
                  android:layout_width="wrap_content"
                  android:paddingRight="4px"/>



Selengkapnya file layout xml kita adalah sebagai berikut:

<?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"
            >
      <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:padding="4px"
      >
            <ImageButton android:id="@+id/play"
                  android:src="@drawable/play"
                  android:layout_height="wrap_content"
                  android:layout_width="wrap_content"
                  android:paddingRight="4px"
                  android:enabled="false"
            />
            <TextView
                  android:text="Play"
                  android:layout_width="fill_parent"

                  android:layout_height="fill_parent"
                  android:gravity="center_vertical"
                  android:layout_gravity="center_vertical"
                  android:textAppearance="?android:attr/textAppearanceLarge"
            />
      </LinearLayout>
      <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:padding="4px"
      >
            <ImageButton android:id="@+id/pause"
                  android:src="@drawable/pause"
                  android:layout_height="wrap_content"
                  android:layout_width="wrap_content"
                  android:paddingRight="4px"
            />
            <TextView
                  android:text="Pause"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:gravity="center_vertical"
                  android:layout_gravity="center_vertical"
                  android:textAppearance="?android:attr/textAppearanceLarge"
            />
      </LinearLayout>
      <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:padding="4px"
      >
            <ImageButton android:id="@+id/stop"
                  android:src="@drawable/stop"
                  android:layout_height="wrap_content"
                  android:layout_width="wrap_content"
                  android:paddingRight="4px"
            />
            <TextView
                  android:text="Stop"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:gravity="center_vertical"
                  android:layout_gravity="center_vertical"
                  android:textAppearance="?android:attr/textAppearanceLarge"
            />
      </LinearLayout>
</LinearLayout>



Sedangkan file music.java selengkapnya adalah sebagai berikut.

music.java
package com.immobulus.music;

import android.app.Activity;
import android.app.AlertDialog;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;


public class music extends Activity
      implements MediaPlayer.OnCompletionListener {
     
      private ImageButton play;
      private ImageButton pause;
      private ImageButton stop;
      private MediaPlayer mp;

      @Override
      public void onCreate(Bundle icicle) {
            super.onCreate(icicle);
            setContentView(R.layout.main);
           
            play=(ImageButton)findViewById(R.id.play);
            pause=(ImageButton)findViewById(R.id.pause);
            stop=(ImageButton)findViewById(R.id.stop);
           
            play.setOnClickListener(new View.OnClickListener() {
                  public void onClick(View view) {
                        play();
                  }
            });
           
            pause.setOnClickListener(new View.OnClickListener() {
                  public void onClick(View view) {
                        pause();
                  }
            });
           
            stop.setOnClickListener(new View.OnClickListener() {
                  public void onClick(View view) {
                        stop();
                  }
            });
           
            setup();
      }
     
      @Override
      public void onDestroy() {
            super.onDestroy();
           
            if (stop.isEnabled()) {
                  stop();
            }
      }
      public void onCompletion(MediaPlayer mp) {
            stop();
      }
     
      private void play() {
            mp.start();
           
            play.setEnabled(false);
            pause.setEnabled(true);
            stop.setEnabled(true);
      }
     
      private void stop() {
            mp.stop();
            pause.setEnabled(false);
            stop.setEnabled(false);
           
            try {
                  mp.prepare();
                  mp.seekTo(0);
                  play.setEnabled(true);
            }
            catch (Throwable t) {
                  goBlooey(t);
            }
      }
     
      private void pause() {
            mp.pause();
           
            play.setEnabled(true);
            pause.setEnabled(false);
            stop.setEnabled(true);
      }
     
      private void loadClip() {
            try {
                  mp=MediaPlayer.create(this, R.raw.himne_mdp);
                  mp.setOnCompletionListener(this);
            }
            catch (Throwable t) {
                  goBlooey(t);
            }
      }
     
      private void setup() {
            loadClip();
            play.setEnabled(true);
            pause.setEnabled(false);
            stop.setEnabled(false);
      }
     
      private void goBlooey(Throwable t) {
            AlertDialog.Builder builder=new AlertDialog.Builder(this);

            builder
                  .setTitle("Exception!")
                  .setMessage(t.toString())
                  .setPositiveButton("OK", null)
                  .show();
      }
}





Sumber: PEMROGRAMAN APLIKASI MOBILE SMARTPHONE DAN TABLET PC 
BERBASIS ANDROID. oleh : Nazruddin Safaat H