Jambispirit.com. Diberdayakan oleh Blogger.
Tampilkan postingan dengan label Mobile Programming. Tampilkan semua postingan
Mobile Web adalah sebuah website yang khusus dibuat untuk perangkat-perangkat mobile dengan kapasitas sumber daya yang kecil seperti handphone, smartphone dan keluarga-keluarganya. Meskipun begitu, mobile web memiliki perbedaan dengan web dekstop yaitu ukuran file yang kecil dan flexibilitas ukuran layar. Selain itu masih ada beberapa aturan lainnya. ok simak tulisan dibawah ini dengan seksama.
Pada saat pertama kali membangun web mobile, penulis mengira penulis hanya perlu membuat sebuah web tableless yang ukurannya dikecilkan sehingga semua ponsel pasti dapat membukanya. Memang asumsi penulis ada benar dan ada salahnya. Benarnya yaitu hampir semua ponsel dapat membuka web mobile penulis, namun untuk ukuran ponsel touchscreen bersistem operasi Android, maka ponsel tersbut tersebut akan membuka halaman penulis seperti layaknya web dekstop sehingga penulis perlu melakukan zooming,
Setelah penulis selidiki ternyata yang membedakannya adalah tulisan dibagian atas sebuah web mobile. perhatikan gambar berikut (Anda juga bisa membuka langsung sebuah web dekstop biasa dengan browser Anda) :
Menurut dua sumber (Wikipedia dan The Insight Research Corporation), pada tahun 2008 pengguna yang mengakses internet melalui perangkat mobile seperti handphone, smartphone dan sebagainya telah melebihi jumlah pengguna yang mengakses internet melalui PC. Fenomena ini dipicu oleh koneksi internet dari perangkat mobile yang semakin mudah dan cepat. Banyak vendor yang tidak mau ketinggalan untuk melakukan investasi di bidang ini baik dalam hal infrastruktur, hardware bahkan software.
Memang investasi di bidang yang sedang tren jelas memang menguntungkan. Salah satunya dengan menciptakan aplikasi berbasis mobile yang terhubung dengan internet sehingga pengguna dapat melakukan interaksi yang lebih banyak. Nah.. berdasarkan latar belakang itulah penulis mengulas sebuah ulasan yang bertema mobile(J2ME) lengkap dengan pembuatan koneksi internetnya.. hehehe..
Sebenarnya, terdapat banyak cara dalam mengakses suatu data dalam jaringan dengan menggunakan J2ME. Namun, karena aplikasi yang akan kita bangun adalah sebuah aplikasi yang J2ME yang dikombinasikan dengan PHP, maka penulis tidak akan membahas jenis koneksi lain yang ada dalam J2ME
HTTP Connection Method GET
Dalam membuat sebuah aplikasi J2ME yang menggunakan koneksi dengan sebuah server seperti koneksi HTTP, ada baiknya kita menciptakan sebuah thread agar tidak terjadi deadlock. Deadlock adalah suatu kondisi dimana dua proses atau lebih saling menunggu proses yang lain untuk melepaskan resource yang sedang dipakai. Karena beberapa proses itu saling menunggu, maka tidak terjadi kemajuan dalam kerja proses-proses tersebut. Hal ini terjadi karena pada saat kita akan menciptakan sebuah koneksi, sistem dari ponsel akan menanyakan kepada kita pertanyaan seperti berikut.
“It’s ok to use airtime?”
Sistem ponsel menanyakan hal tersebut karena aplikasi yang kita buat tidak dikenali oleh sistem. Proses yang menanyakan pertanyaan kepada pengguna dan proses penciptaan koneksi yang terjadi secara serentak inilah yang menyebabkan terjadinya deadlock. Nah.. agar tidak terjadi deadlock, maka kita perlu membuat sebuah inner kelas thread untuk menciptakan suatu koneksi. Kenapa mesti menciptakan inner kelas.? Karena kita akan menggunakan kelas koneksi ini secara berluang-ulang.
Membuat Video Player Menggunakan J2ME
Mungkin Anda telah biasa membuat video player menggunakan VB, Delphi, Foxpro maupun bahasa pemrograman lainnya. Namun bahasa pemrograman diatas hanya dapate berjalan pada aplikasi desktop. Lalu bagaimana kalau kita ingin membuatnya dalam aplikasi mobile?. Nah J2ME dapat menjawab pertanyaannya. Perhatikan skrip berikut:
/***********************************************************
Sumber:tuntunan pemrograman java ternitan Informatika
***********************************************************/
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.media.control.VideoControl;
import java.io.InputStream;
public class VideoPlayer extends MIDlet
implements CommandListener, Runnable, PlayerListener {
private Display display;
private Form form;
private Thread thread;
private Player player;
private VideoControl videocontrol;
private final Command cmdKeluar =
new Command("Keluar", Command.EXIT, 1);
private final Command cmdMainkan =
new Command("Mainkan", Command.SCREEN, 1);
private final Command cmdBerhenti =
new Command("Berhenti", Command.OK, 1);
public VideoPlayer() {
display = Display.getDisplay(this);
}
public void startApp() {
form = new Form("Video Player");
form.addCommand(cmdKeluar);
form.addCommand(cmdMainkan);
form.setCommandListener(this);
display.setCurrent(form);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable s) {
if (c == cmdKeluar) {
destroyApp(false);
notifyDestroyed();
} else if (c == cmdMainkan) {
form.deleteAll();
thread = new Thread(this);
thread.start();
form.removeCommand(cmdMainkan);
form.removeCommand(cmdKeluar);
form.addCommand(cmdBerhenti);
} else if (c == cmdBerhenti) {
try {
player.stop();
stopVideo();
} catch (MediaException me) {
me.printStackTrace();
}
}
}
public void run() {
try {
InputStream is =
getClass().getResourceAsStream("Video.3gp");
player = Manager.createPlayer(is, "video/3gpp");
player.addPlayerListener(this);
player.realize();
// mendapatkan kontrol video
videocontrol =
(VideoControl) player.getControl("VideoControl");
// mendapatkan GUI untuk memainkan video
Item videoItem = (Item) videocontrol.initDisplayMode(
VideoControl.USE_GUI_PRIMITIVE, null);
// memasukkan item yang didapat ke dalam form
form.append(videoItem);
// menjalankan video
player.start();
} catch (Exception e) {
e.printStackTrace();
}
}
public void stopVideo() {
try {
player.deallocate();
player.close();
player = null;
thread = null;
form.removeCommand(cmdBerhenti);
form.addCommand(cmdMainkan);
form.addCommand(cmdKeluar);
} catch (Exception e) {
e.printStackTrace();
}
}
public void playerUpdate(Player player,
String event, Object data) {
if (event.equals(STOPPED)
event.equals(STOPPED_AT_TIME)
event.equals(ERROR)
event.equals(END_OF_MEDIA)) {
stopVideo();
}
}
}--------------------------------------------------------------------
Import javax.microedition
J2ME & PHP
J2ME merupakan bahasa bahasa pemrograman java yang khusus diperuntukan untuk aplikasi wireless/mobile. Umumnya, J2ME sering dikombinasikan dengan saudaranya yaitu J2EE tetapi bukan tidak mungkin kalau J2ME dikombinasikan denfan PHP. Pada artikel kali ini penulis berusaha menyajikan sedikit contoh bagaimana J2ME berinteraksi dengan PHP. Berikut adalah contoh skripnya:
Kode J2ME :
import java.io.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class SimpleGETExample extends MIDlet {
private Display display; String url = "http://127.0.0.1/midlet/testGET.php?type=2";
public SimpleGETExample() {
display = Display.getDisplay(this);
}
public void startApp() {
try {
testGET(url);
} catch (IOException e) {
System.out.println("IOException " + e);
e.printStackTrace(); }
}
public void pauseApp() { }
public void destroyApp(boolean unconditional) { }
void testGET(String url) throws IOException {
HttpConnection connection = null;
InputStream is = null;
OutputStream os = null;
StringBuffer stringBuffer = new StringBuffer();
TextBox textBox = null;
try {
connection = (HttpConnection)Connector.open(url);
connection.setRequestMethod(HttpConnection.GET);
connection.setRequestProperty("IF-Modified-Since","20 Jan 2001 16:19:14 GMT");
connection.setRequestProperty("User-Agent","Profile/MIDP-2.0 Confirguration/CLDC-1.0");
connection.setRequestProperty("Content-Language", "en-CA");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
os = connection.openOutputStream();
is = connection.openDataInputStream();
int ch;
while ((ch = is.read()) != -1) {
stringBuffer.append((char) ch);
}
textBox = new TextBox("Simple GET Test", stringBuffer.toString(), 1024, 0);
} finally {
if(is!= null) {
is.close();
}
if(os != null) {
os.close();
}
if(connection != null) {
connection.close();
}
}
display.setCurrent(textBox);
}
}
Kode PHP :
case 1: $response = "Good Morning"; break;
case 2: $response = "Good Afternoon"; break;
case 3: $response = "Good Evening"; break;
default: $response = "Hello"; break; }
}
echo $response;?>

