Ini cuma aplikasi sederhana cara memainkan MP3 di SDCARD, dengan menampilkan daftar lagu MP3 pada sebuah ListView.
Buat proyek baru dengan nama MP3Player di Eclipse. Activity utama kita bernama Mp3PlayerActivity.
Layout
Pertama-tama definisikan layout untuk menampilkan daftar lagu. Pakai saja ListView untuk menyederhanakan program. Nanti kalau sudah mahir boleh pakai list yang lebih cantik tampilannya. Jadi bikin dulu layout baru namanya daftarlagu.xml.
<?xml version=“1.0″ encoding=“utf-8″?>
<LinearLayout
xmlns:android=“http://schemas.android.com/apk/res/android”
android:orientation=“vertical”
android:layout_width=“match_parent”
android:layout_height=“match_parent”>
<ListView android:id=“@id/android:list”
android:layout_width=“fill_parent”
android:layout_height=“fill_parent”
android:layout_weight=“1″
android:drawSelectorOnTop=“false”
/>
<TextView android:id=“@id/android:empty”
android:layout_width=“fill_parent”
android:layout_height=“fill_parent”
android:text=“tidak ada lagu SD Card”
/>
</LinearLayout>
ListView yang cukup simple, yang akan menampilkan text “tidak ada lagi di SD card” ketika tidak ada items ditemukan di ListView.
Lalu bikin lagi file XML untuk menampilkan setiap file MP3 yang akan dimunculkan di ListView, kasi nama misalnya viewlagu.xml.
<?xml version=“1.0″ encoding=“utf-8″?>
<?xml version=“1.0″ encoding=“utf-8″?>
<TextView android:id=“@+id/text1″ xmlns:android=“http://schemas.android.com/apk/res/android”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”/>
Activity
Kemudian buka file MP3PlayerActivity.java yang sudah otomatis dibuat pada saat create project sebelumnya. Edit file tersebut sehingga lengkap seperti sebagai berikut:
package com.vitraining;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import android.app.ListActivity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class Mp3PlayerActivity extends ListActivity {
private static final String MEDIA_PATH = new String(“/sdcard/”);
private List<String> songs = new ArrayList<String>();
private MediaPlayer mp = new MediaPlayer();
private int currentPosition = 0;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.daftarlagu);
updateDaftarLagu();
}
public void updateDaftarLagu() {
File home = new File(MEDIA_PATH);
if (home.listFiles(new Mp3Filter()).length > 0) {
for (File file : home.listFiles(new Mp3Filter())) {
songs.add(file.getName());
}
ArrayAdapter<String> songList = new ArrayAdapter<String>(this, R.layout.viewlagu, songs);
setListAdapter(songList);
}
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
currentPosition = position;
playSong(MEDIA_PATH + songs.get(position));
}
private void playSong(String songPath) {
try {
mp.reset();
mp.setDataSource(songPath);
mp.prepare();
mp.start();
// Setup listener so next song starts automatically
mp.setOnCompletionListener(new OnCompletionListener() {
public void onCompletion(MediaPlayer arg0) {
nextSong();
}
});
} catch (IOException e) {
Log.v(getString(R.string.app_name), e.getMessage());
}
}
private void nextSong() {
if (++currentPosition >= songs.size()) {
// Last song, just reset currentPosition
currentPosition = 0;
} else {
// Play next song
playSong(MEDIA_PATH + songs.get(currentPosition));
}
}
}
class Mp3Filter implements FilenameFilter {
public boolean accept(File dir, String name) {
return (name.endsWith(“.mp3″));
}
}
Import package-package yang diperlukan. Di Eclipse, arahkan ke class yang dibilang error, lalu pilih import <nama package>.
Lakukan proses build (Project à Build Project) agar layout dikenali disini.
Function onCreate() gunanya untuk menampilkan view daftarlagu yang sudah kita buat sebelumnya. Kemudian memanggil function updateDaftarLagu().
Function updateDaftarLagu() gunanya untuk membaca semua file yang ada di SD Card sesuai filter yang telah didefinisikan sebelumnya (yaitu class MP3Filter). Setiap file lagu yang ditemukan, nama filenya disimpan di variable songs. Kemudian dibentuk ListAdapter yang datanya berasal dari variable songs dan layoutnya dari viewlagu yang sudah didefinisikan di atas.
Ketika item di ListView di-click maka program menjalankan function playSong().
Function playSong() gunanya untuk memainkan file MP3. Terlebih dahulu object variable mp di reset(), kemudian di-set file data nya dengan setDataSource(), di prepare(), dan di start(). Ketika selesai memainkan suatu lagu, program menjalankan function nextSong(). Ini dilakukan pada function setOnCompleteListener().
Function nextSong() gunanya untuk memajukan index variable songs dan memainkan lagu pada index tersebut.
Class Mp3Filter gunanya untuk meng-accept() file hanya jika ber-extension MP3.
Membuat emulasi SD Card
Agar bias jalan seperti di device, kita perlu bikin SD Card di emulator. Masuk ke folder android-sdk/tools, dan jalankan.
./mksdcard 128M /tmp/sd.img
Selanjutnya masuk ke menu Eclipse Run à Run Configurations… Pilih nama project yaitu MP3Player.
Di Tab Target, tambahkan di bagian Additional Emulator Command Line Options: “–sdcard /tmp/sd.img”

Lalu klik Run disitu untuk menjalankan emulator.
Awalnya program menampilkan pesan “tidak ada lagu di SC Card”. Gimana cara mengisi SD Card dengan file MP3?
Masuk ke android-sdk/platform-tools, dan jalankan
Adb push <sumber> /mnt/sdcard
Misalnya
adb push /Users/akhmaddanielsembiring/Documents/etc/lagu/Gigi\ -\ 11\ Januari.mp3 /mnt/sdcard
Jalankan ulang program di emulator, hasilnya kira-kira seperti ini.

Pingin tau lebih detail tentang pemrograman Android? Koneksi ke server, web services, JSON, GPS, Mapping Google maps? Ikuti training Android di VITRAINING.