Sudah semakin dekat dengan penelitian ilmiah tetapi saya masih belum memutuskan untuk membuat apa. Pengetahuan tentang pemrograman masih sangat rendah apalagi tentang sistem operasi ataupun jaringan. Ingin merambah dunia website tetapi sangat sulit mencari koneksi internet di Indonesia.
Beruntung saya sempat mempelajari Java di semester lalu. Kemudian saya berencana untuk mengembangkan aplikasi yang pernah saya buat bersama seorang teman saya beberapa waktu yang lalu. Aplikasi ini adalah sebuah media player, tetapi saat dibuat masih sangat sederhana dan bahkan belum sempat memutar video dengan sempurna. Maklum saja, saat itu kami masih sangat baru dalam pemrograman Java dan baru saja belajar pemrograman berorientasi objek.
Tampilan grafisnya seperti di bawah ini
Kebetulan memang sudah support playlist untuk memutar lagu namun masih bersifat single playlist. Sudah memiliki fasilitas shuffle dan repeat seperti layaknya audio player lainnya.
Aplikasi ini dibuat menggunakan Java sebagai bahasa pemrogramannya. Ditambah dengan dukungan JMF atau Java Media Player dan JMF MP3 plug-in sebagai framework multimedia. Dan seperti aplikasi Java lainnya, aplikasi ini pun dapat berjalan di sistem operasi selain Windows seperti Linux asalkan pada sistem tersebut sudah didukung oleh Java Development Kit versi 1.6 dan Java Media Framework.
Berikut adalah kelas inti dari aplikasi ini :
1. AvaBaseUI
2. AvaPlaylist
3. PlaylistItem
Karena saat itu kami masih belum menggunakan konsep MVC secara menyeluruh, jadi aplikasi ini masih sangat tight coupling disana sini. Kami menggunakan kelas AvaBaseUI untuk menangani baik tempilan sekaligus kontrol aplikasi. Playlist dihasilkan oleh kelas AvaPlaylist, yang apabila ditambahkan sebuah media kedalamnya maka AvaPlaylist akan otomatis membuat objek baru dari PlaylistItem yang merepresentasikan media tersebut. Kemudian AvaPlaylist akan mengumpulkannya sebagai Collection dari PlaylistItem, sehingga dapat dengan mudah diorganisir.
Berikut potongan kode program dari PlaylistItem,
package ava.playlist;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
/**
*
* @author dai
*/
class PlaylistItem {
private int index;
private String songArtist;
private String songTitle;
private String songAlbum;
private String bitRate;
private String duration;
private String songName;
private String rawName;
private String songPath;
private URL songURL;
private File file;
private avaTag tag;
public PlaylistItem(String rawName, String songPath) {
this.rawName = rawName;
this.songPath = songPath;
file = new File(songPath);
tag = new avaTag();
}
public URL getSongURL() {
try {
songURL = file.toURL();
} catch (MalformedURLException ex) {
System.out.println("Exception : " + ex);
}
return songURL;
}
public void generateHeader() {
tag.getMp3Tag(file);
try {
songTitle = tag.getTitle();
} catch(NullPointerException e) {
songArtist = "Title";
}
try {
songArtist = tag.getArtist();
} catch (NullPointerException e) {
songArtist = "Unknown Artist";
}
try {
songAlbum = tag.getAlbum();
} catch (NullPointerException e) {
songAlbum = "Album";
}
}
public String getBitRateAsString() {
return tag.getBitRateAsString();
}
public String getChannel() {
return tag.getChannel();
}
public String getDurationAsString() {
return tag.getDurationAsString();
}
public String getSongAlbum() {
return songAlbum;
}
public void setIndex(int index) {
this.index = index;
}
public void setSongPath(String songPath) {
this.songPath = songPath;
}
public String getSongTitle() {
return songTitle;
}
public int getIndex() {
return index;
}
public String getSongArtist() {
return songArtist;
}
public String getRawName() {
return rawName;
}
public String getSongName() {
return songName;
}
public String getSongPath() {
return songPath;
}
}
Setiap PlaylistItem mewakili karakteristik dari media yang diitambahkan ke playlist. Misalkan, user menambahkan sebuah file musik baru yang memilki informasi diantaranya, penyanyinya Rob Thomas dan judul lagunya Little Wonder. Maka, objek PlaylistItem baru akan dibuat dan mengekstrak informasi dari file musik tersebut dan menyimpannya sebagai atribut.
Dengan demikian, AvaPlaylist dapat mengambil informasi dari tiap PlaylistItem dan mengirimkannya ke AvaBaseUI untuk selanjutnya ditampilkan sebagai daftar lagu di tampilan playlist. Kemudian user dapat memilih lagu-lagu yang telah ditambahkannya ke playlist dan memutar sesuai mode yang diinginkan baik itu sekuensial atau berurut ataupun random atau acak.
No comments:
Post a Comment