Tutorial Pemrograman dan Source Code, Android, Web, Mobile, Desktop, Database dan Software. Tutorial Pemrograman Android, Web, PHP, Javascript, VB.NET, C#, ASP.NET dan Java
Tampilkan postingan dengan label J2ME. Tampilkan semua postingan
Tampilkan postingan dengan label J2ME. Tampilkan semua postingan
Rabu, 23 Mei 2012
Web Reader Java ME NetBeans
Web Reader J2ME
Untuk membuat aplikasi Web Reader di Java ME NetBeans dapat digunakan library import javax.microedition.io.*. Langkah-langkah pembuatannya sebagai berikut :
1. Buka Netbeans. Klik menu File-New Project. Pilih Categories : Java ME, Projects : Mobile Application. Klik Next. Pada dialog berikutnya, isikan Project Name : MobileWebReader. Kemudian cek Set As Main Project dan hilangkan cek pada Create Hello Midlet. Klik Next. Klik Next. Klik Finish.
2. Pada Project TreeView klik kanan, pilih New – Visual Midlet. Kemudian akan muncul dialog, isikan Class Name : MWeb, package : my.appwebreader. Klik Finish. Akan ditampilkan MIDlet kosong pada Design. Dari Palette Displayables tambahkan Form, kemudian ubah namanya menjadi FMain. Kemudian pada Form FMain tambahkan itemCommand dan exitCommand dari Pallete Commands. Ubah name dari itemCommand menjadi cmWeather dan label-nya menjadi “Cuaca”. Setelah itu tarik garis dari MIDlet Started menuju FMain, kemudian dari FMain exitCommand tarik garis ke MIDlet Resumed..
3. Pada Screen Design akan ditampilkan Design dari FMain. Ubah title dari FMain menjadi “Web Reader”, kemudian tambahkan 1 buah TextField. Ubah name-nya menjadi tResult. Kemudian ubah property label dari TextField tersebut menjadi “Result”. Kemudian property text-nya kosongkan, menjadi “”. Sehingga tampak seperti pada tampilan berikut ini :
4. Pada cmWeather, klik kanan pilih Go to Source. Pada Source akan muncul kode program dari method public void commandAction(), di dalamnya pada blok if (command == cmWeather) { } tambahkan kode program berikut :
public void commandAction(Command command, Displayable displayable) {
// write pre-action user code here
if (displayable == FMain) {
if (command == cmWeather) {
// write pre-action user code here
try {
new Thread(new Runnable()
{
public void run()
{
try {
tResult.setString("");
StreamConnection sCon = (StreamConnection)Connector.open("http://localhost/cuaca.htm");
InputStream is = sCon.openInputStream();
StringBuffer b = new StringBuffer();
int ch;
while ((ch = is.read()) != -1) {
b.append((char) ch);
}
int cutidx = b.toString().indexOf("Yogyakarta");
cutidx = b.toString().indexOf("<small>", cutidx);
int lstidx = b.toString().indexOf("</small>", cutidx);
String result = "Cuaca Yogyakarta " + b.toString().substring((cutidx + 7), (lstidx));
tResult.setString(result);
} catch (Exception e) {
}
}
}).start();
} catch (Exception e) {
}
// write post-action user code here
} else if (command == exitCommand) {
// write pre-action user code here
exitMIDlet();
// write post-action user code here
}
}
// write post-action user code here
}
5. Klik Run untuk menjalankan aplikasi. Kemudian klik menu Cuaca, maka akan ditampilkan Prakiraan Cuaca dari Web (misalnya web BMG) untuk suatu kota (misalnya kota Yogyakarta). Hasilnya akan tampak seperti di bawah ini :
Selasa, 22 Mei 2012
Membuat RSS Reader dengan J2ME NetBeans
RSS Reader dengan J2ME
Untuk membuat aplikasi RSS Reader
di Java ME NetBeans dapat digunakan library KXML. Langkah-langkah pembuatannya
sebagai berikut :
1. Buka Netbeans. Klik menu
File-New Project. Pilih Categories : Java ME, Projects : Mobile
Application. Klik Next. Pada dialog berikutnya, isikan Project Name : MobileRSSReader.
Kemudian cek Set As Main Project dan hilangkan cek pada Create Hello Midlet. Klik
Next. Klik Next. Klik Finish.
2. Pada Project TreeView klik kanan,
pilih New – Visual Midlet. Kemudian akan muncul dialog, isikan Class Name : MNews,
package : my.apprsseader. Klik Finish. Akan ditampilkan MIDlet kosong pada
Design. Dari Palette Displayables tambahkan Form, kemudian ubah namanya menjadi
FMain. Kemudian pada Form FMain tambahkan itemCommand dan exitCommand dari
Pallete Commands. Ubah name dari itemCommand menjadi cmGet dan label-nya
menjadi “Get”. Setelah itu tarik garis dari MIDlet St arted menuju FMain, kemudian
dari FMain exitCommand tarik garis ke MIDlet Resumed..
3. Pada Screen Design akan
ditampilkan Design dari FMain. Ubah title dari FMain menjadi “New Reader”,
kemudian tambahkan 1 buah TextField. Ubah name-nya menjadi tList. Kemudian ubah
property label dari TextField tersebut menjadi “News List”. Kemudian property
text-nya kosongkan, menjadi “”. Sehingga tampak seperti pada tampilan berikut
ini :
4. Pada cmGet, klik kanan pilih Go to
Source. Pada Source akan muncul kode program dari method public void
commandAction(), di dalamnya pada blok if (command == cmGet) { } tambahkan kode
program berikut :
public void commandAction(Command command,
Displayable displayable) {
// write pre-action user code here
if (displayable == FMain) {
if (command == cmGet) {
// write pre-action user code
here
try {
new Thread(new Runnable()
{
public void run()
{
try {
HttpConnection
conn;
DataInputStream
dis;
DataOutputStream dos;
conn =
(HttpConnection)
Connector.open("http://www.nytimes.com/services/xml/rss/nyt/National.xml");
conn.setRequestMethod(HttpConnection.GET);
conn.setRequestProperty("Content-Type", "text/xml");
dos = new
DataOutputStream(conn.openDataOutputStream());
dis = new
DataInputStream(conn.openDataInputStream());
if (conn.getResponseCode()
== HttpConnection.HTTP_OK) {
doParse(dis);
String
newsList = "";
for (int i
= 0; i < jumlah; i++) {
newsList = newsList + sTitle +
"\n";
newsList = newsList + sLink + "\n";
newsList = newsList + sDescription + "\n";
newsList = newsList + "--------------------------\n";
}
} else {
tList.setString("Koneksi Error");
}
} catch (Exception
e) {
}
}
}).start();
} catch (Exception e) {
}
// write post-action user code
here
} else if (command == exitCommand)
{
// write pre-action user code
here
exitMIDlet();
// write post-action user code
here
}
}
// write post-action user code here
}
5. Lanjutkan
untuk cmEdit, cmDelete, cmSave, cmCancel dan lainnya. Berikut ini kode program
selengkapnya :
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import java.io.*;
import java.io.*;
import org.kxml2.io.*;
import org.xmlpull.v1.*;
public class MNews extends MIDlet implements
CommandListener {
private
boolean midletPaused = false;
//<editor-fold defaultstate="collapsed" desc="
Generated Fields ">
private
Form FMain;
private
TextField tList;
…
private
KXmlParser parser;
private
int jumlah = 0;
private
String sTitle[] = new String[100];
private
String sLink[] = new String[100];
private
String sDescription[] = new String[100];
…
public
void commandAction(Command command, Displayable displayable) {
//
write pre-action user code here
if
(displayable == FMain) {
if
(command == cmGet) {
// write pre-action user code here
try {
new Thread(new Runnable()
{
public void run()
{
try {
HttpConnection
conn;
DataInputStream
dis;
DataOutputStream
dos;
conn =
(HttpConnection)
Connector.open("http://www.nytimes.com/services/xml/rss/nyt/National.xml");
conn.setRequestMethod(HttpConnection.GET);
conn.setRequestProperty("Content-Type",
"text/xml");
dos = new
DataOutputStream(conn.openDataOutputStream());
dis = new
DataInputStream(conn.openDataInputStream());
if (conn.getResponseCode() ==
HttpConnection.HTTP_OK) {
doParse(dis);
String
newsList = "";
for (int i
= 0; i < jumlah; i++) {
newsList =
newsList + sTitle + "\n";
newsList = newsList + sLink + "\n";
newsList = newsList + sDescription + "\n";
newsList = newsList +
"--------------------------\n";
}
} else {
tList.setString("Koneksi Error");
}
} catch (Exception e) {
}
}
}).start();
} catch (Exception e) {
}
// write post-action user code here
}
else if (command == exitCommand) {
// write pre-action user code here
exitMIDlet();
// write post-action user code here
}
}
//
write post-action user code here
}
…
public
void doParse(InputStream isxml) {
parser
= new KXmlParser();
try {
parser.setInput(new InputStreamReader(isxml));
parser.next();
parser.require(XmlPullParser.START_TAG, null, "rss");
parser.nextTag();
parser.require(XmlPullParser.START_TAG, null, "channel");
while (parser.nextTag() != XmlPullParser.END_TAG) {
parser.require(XmlPullParser.START_TAG, null, "title");
sTitle[jumlah] = new String("Title: " + parser.nextText());
parser.require(XmlPullParser.END_TAG, null, "title");
parser.nextTag();
parser.require(XmlPullParser.START_TAG, null, "link");
sLink[jumlah] = new String("Link: " + parser.nextText());
parser.require(XmlPullParser.END_TAG, null, "link");
parser.nextTag();
parser.require(XmlPullParser.START_TAG, null, "description");
sDescription[jumlah] = new String("Description: " +
parser.nextText());
parser.require(XmlPullParser.END_TAG, null, "description");
parser.nextTag();
}
parser.require(XmlPullParser.END_TAG, null, "channel");
jumlah++;
}
catch (Exception e) {
e.printStackTrace();
}
}
}
Membuat Bluetooth Chat dengan J2ME NetBeans
Bluetooth Chat dengan J2ME NetBeans
Untuk membuat aplikasi Bluetooth Chat di Java ME NetBeans dapat digunakan library import javax.microedition.io.*.
Langkah-langkah pembuatannya sebagai berikut :
1. Buka Netbeans. Klik menu
File-New Project. Pilih Categories : Java ME, Projects : Mobile
Application. Klik Next. Pada dialog berikutnya, isikan Project Name : BlueChat.
Kemudian cek Set As Main Project dan hilangkan cek pada Create Hello Midlet. Klik
Next. Klik Next. Klik Finish.
2. Pada Project TreeView klik kanan,
pilih New –Midlet.
Kemudian akan muncul dialog, isikan Class Name : ChatController, package : my.blue.
Klik Finish. Akan ditampilkan MIDlet kosong, isikan kode program berikut ini :
package my.blue;
import java.util.Vector;
import java.io.IOException;
import javax.microedition.io.Connector;
import
javax.microedition.io.ConnectionNotFoundException;
import javax.microedition.midlet.MIDlet;
import
javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextField;
import javax.microedition.lcdui.StringItem;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.ChoiceGroup;
import javax.microedition.lcdui.Choice;
import javax.bluetooth.LocalDevice;
import javax.bluetooth.RemoteDevice;
import javax.bluetooth.DiscoveryAgent;
import javax.bluetooth.DataElement;
import javax.bluetooth.DeviceClass;
import javax.bluetooth.UUID;
import javax.bluetooth.DiscoveryListener;
import javax.bluetooth.ServiceRecord;
import javax.bluetooth.L2CAPConnectionNotifier;
import javax.bluetooth.L2CAPConnection;
import javax.bluetooth.BluetoothStateException;
import javax.bluetooth.BluetoothConnectionException;
import javax.bluetooth.ServiceRegistrationException;
public class ChatController extends MIDlet
implements CommandListener
{
private
Display display = null;
private Form
mainForm = null;
private
ChoiceGroup devices = null;
private
TextField inTxt = null;
private
TextField outTxt = null;
private
Command exit = null;
private
Command start = null;
private
Command connect = null;
private
Command send = null;
private
Command select = null;
private
StringItem status = null;
private
LocalDevice local = null;
private
RemoteDevice rDevices[];
private
ServiceRecord service = null;
private
DiscoveryAgent agent = null;
private
L2CAPConnectionNotifier notifier;
private
L2CAPConnection connection = null;
private
static final String UUID_STRING = "112233445566778899AABBCCDDEEFF";
private
boolean running = false;
public
ChatController()
{
super();
display =
Display.getDisplay(this);
mainForm = new Form("CHAT");
devices = new
ChoiceGroup(null,Choice.EXCLUSIVE);
inTxt = new TextField("incoming
msg:","",256,TextField.ANY);
outTxt = new TextField("outgoing
msg:","",256,TextField.ANY);
exit = new
Command("EXIT",Command.EXIT,1);
start = new
Command("START",Command.SCREEN,2);
connect = new
Command("CONNECT",Command.SCREEN,2);
send = new
Command("SEND",Command.SCREEN,2);
select = new
Command("SELECT",Command.SCREEN,2);
status = new StringItem("status :
",null);
mainForm.append(status);
mainForm.addCommand(exit);
mainForm.setCommandListener(this);
}
protected
void startApp() throws MIDletStateChangeException
{
running =
true;
mainForm.addCommand(start);
mainForm.addCommand(connect);
display.setCurrent(mainForm);
try
{
local
= LocalDevice.getLocalDevice();
agent = local.getDiscoveryAgent();
}
catch(BluetoothStateException bse)
{
status.setText("BluetoothStateException unable to
start:"+bse.getMessage());
try
{
Thread.sleep(1000);
}
catch(InterruptedException
ie)
{}
notifyDestroyed();
}
}
protected
void pauseApp()
{
running =
false;
releaseResources();
}
protected
void destroyApp(boolean uncond) throws MIDletStateChangeException
{
running =
false;
releaseResources();
}
public void
commandAction(Command cmd,Displayable disp)
{
if(cmd==exit)
{
running = false;
releaseResources();
notifyDestroyed();
}
else if(cmd==start)
{
new Thread()
{
public void run()
{
startServer();
}
}.start();
}
else
if(cmd==connect)
{
status.setText("searching for
devices...");
mainForm.removeCommand(connect);
mainForm.removeCommand(start);
mainForm.append(devices);
DeviceDiscoverer discoverer = new
DeviceDiscoverer(ChatController.this);
try
{
agent.startInquiry(DiscoveryAgent.GIAC,discoverer);
}
catch(IllegalArgumentException iae)
{
status.setText("BluetoothStateException :"+iae.getMessage());
}
catch(NullPointerException npe)
{
status.setText("BluetoothStateException :"+npe.getMessage());
}
catch(BluetoothStateException bse1)
{
status.setText("BluetoothStateException :"+bse1.getMessage());
}
}
else if(cmd==select)
{
status.setText("searching devices
for service...");
int index = devices.getSelectedIndex();
mainForm.delete(mainForm.size()-1);//deletes
choiceGroup
mainForm.removeCommand(select);
ServiceDiscoverer serviceDListener = new
ServiceDiscoverer(ChatController.this);
int attrSet[] = {0x0100}; //returns service
name attribute
UUID[] uuidSet = {new
UUID(UUID_STRING,false)};
try
{
agent.searchServices(attrSet,uuidSet,rDevices[index],serviceDListener);
}
catch(IllegalArgumentException iae1)
{
status.setText("BluetoothStateException :"+iae1.getMessage());
}
catch(NullPointerException npe1)
{
status.setText("BluetoothStateException :"+npe1.getMessage());
}
catch(BluetoothStateException bse11)
{
status.setText("BluetoothStateException
:"+bse11.getMessage());
}
}
else if(cmd==send)
{
new Thread()
{
public void run()
{
sendMessage();
}
}.start();
}
}
//this method is called from DeviceDiscoverer when
device inquiry finishes
public void
deviceInquiryFinished(RemoteDevice[] rDevices,String message)
{
this.rDevices = rDevices;
String deviceNames[] = new
String[rDevices.length];
for(int k=0;k<rDevices.length;k++)
{
try
{
deviceNames[k]
= rDevices[k].getFriendlyName(false);
}
catch(IOException ioe)
{
status.setText("IOException
:"+ioe.getMessage());
}
}
for(int
l=0;l<deviceNames.length;l++)
{
devices.append(deviceNames[l],null);
}
mainForm.addCommand(select);
status.setText(message);
}
//called by ServiceDiscoverer when service search
gets completed
public void
serviceSearchFinished(ServiceRecord service,String message)
{
String url = "";
this.service = service;
status.setText(message);
try
{
url =
service.getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT,false);
}
catch (IllegalArgumentException iae1)
{}
try
{
connection =
(L2CAPConnection)Connector.open(url);
status.setText("connected...");
new
Thread()
{
public void run()
{
startReciever();
}
}.start();
}
catch(IOException ioe1)
{
status.setText("IOException :"+ioe1.getMessage());
}
}
// this
method starts L2CAPConnection chat server from server mode
public void
startServer()
{
status.setText("server starting...");
mainForm.removeCommand(connect);
mainForm.removeCommand(start);
try
{
local.setDiscoverable(DiscoveryAgent.GIAC);
notifier
=
(L2CAPConnectionNotifier)Connector.open("btl2cap://localhost:"+UUID_STRING+";name=L2CAPChat");
ServiceRecord
record = local.getRecord(notifier);
String
conURL = record.getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT,false);
status.setText("server
running...");
connection
= notifier.acceptAndOpen();
new
Thread()
{
public void run()
{
startReciever();
}
}.start();
}
catch(IOException ioe3)
{
status.setText("IOException :"+ioe3.getMessage());
}
}
//starts a
message reciever listening for incomming message
public void
startReciever()
{
mainForm.addCommand(send);
mainForm.append(inTxt);
mainForm.append(outTxt);
while(running)
{
try
{
if(connection.ready())
{
int receiveMTU =
connection.getReceiveMTU();
byte[] data = new byte[receiveMTU];
int length = connection.receive(data);
String message = new String(data,0,length);
inTxt.setString(message);
}
}
catch(IOException ioe4)
{
status.setText("IOException
:"+ioe4.getMessage());
}
}
}
//sends a
message over L2CAP
public void
sendMessage()
{
try
{
String message = outTxt.getString();
byte[]
data = message.getBytes();
int
transmitMTU = connection.getTransmitMTU();
if(data.length
<= transmitMTU)
{
connection.send(data);
}
else
{
status.setText("message ....");
}
}
catch
(IOException ioe5)
{
status.setText("IOException :"+ioe5.getMessage());
}
}
//closes
L2CAP connection
public void
releaseResources()
{
try
{
if(connection != null)
connection.close();
if(notifier
!= null)
notifier.close();
}
catch(IOException ioe6)
{
status.setText("IOException :"+ioe6.getMessage());
}
}
}
3. Pada Project TreeView klik
kanan, pilih New –Midlet.
Kemudian akan muncul dialog, isikan Class Name : DeviceDiscoverer, package :
my.blue. Klik Finish. Akan ditampilkan MIDlet kosong, isikan kode program
berikut ini :
package my.blue;
import java.util.Vector;
import
javax.bluetooth.RemoteDevice;
import
javax.bluetooth.DeviceClass;
import
javax.bluetooth.DiscoveryListener;
import
javax.bluetooth.ServiceRecord;
public class
DeviceDiscoverer implements DiscoveryListener
{
private ChatController controller = null;
private Vector devices = null;
private RemoteDevice[] rDevices = null;
public DeviceDiscoverer(ChatController
controller)
{
super();
this.controller = controller;
devices = new Vector();
}
public void deviceDiscovered(RemoteDevice
remote,DeviceClass dClass)
{
devices.addElement(remote);
}
public void inquiryCompleted(int descType)
{
String message =
"";
switch(descType)
{
case
DiscoveryListener.INQUIRY_COMPLETED:
message
= "INQUIRY_COMPLETED";
break;
case
DiscoveryListener.INQUIRY_TERMINATED:
message
= "INQUIRY_TERMINATED";
break;
case
DiscoveryListener.INQUIRY_ERROR:
message
= "INQUIRY_ERROR";
break;
}
rDevices = new RemoteDevice[devices.size()];
for(int
i=0;i<devices.size();i++)
rDevices[i] =
(RemoteDevice)devices.elementAt(i);
controller.deviceInquiryFinished(rDevices,message);//call of a method
from ChatController class
devices.removeAllElements();
controller = null;
devices = null;
}
public void servicesDiscovered(int
transId,ServiceRecord[] services)
{}
public void serviceSearchCompleted(int
transId,int respCode)
{}
}
4. Pada Project TreeView klik kanan,
pilih New –Midlet.
Kemudian akan muncul dialog, isikan Class Name : ServiceDiscoverer, package :
my.blue. Klik Finish. Akan ditampilkan MIDlet kosong, isikan kode program
berikut ini :
package
my.blue;
import
javax.bluetooth.RemoteDevice;
import
javax.bluetooth.DataElement;
import javax.bluetooth.DeviceClass;
import
javax.bluetooth.DiscoveryListener;
import
javax.bluetooth.ServiceRecord;
public
class ServiceDiscoverer implements DiscoveryListener
{
private static final String SERVICE_NAME =
"L2CAPChat";
private ChatController controller = null;
private ServiceRecord service = null;
public ServiceDiscoverer(ChatController
controller)
{
super();
this.controller = controller;
}
public void deviceDiscovered(RemoteDevice
remote,DeviceClass dClass)
{}
public void inquiryCompleted(int descType)
{}
public void servicesDiscovered(int
transId,ServiceRecord[] services)
{
for(int j=0;j<services.length;j++)
{
DataElement dataElementName = services[j].getAttributeValue(0x0100);
String serviceName = (String)dataElementName.getValue();
if(serviceName.equals(SERVICE_NAME))
service = services[j];
break;
}
}
public void serviceSearchCompleted(int
transId,int respCode)
{
String message = "";
switch(respCode)
{
case DiscoveryListener.SERVICE_SEARCH_COMPLETED:
message =
"SERVICE_SEARCH_COMPLETED";
break;
case DiscoveryListener.SERVICE_SEARCH_ERROR:
message =
"SERVICE_SEARCH_ERROR";
break;
case DiscoveryListener.SERVICE_SEARCH_TERMINATED:
message =
"SERVICE_SEARCH_TERMINATED";
break;
case DiscoveryListener.SERVICE_SEARCH_NO_RECORDS:
message =
"SERVICE_SEARCH_NO_RECORDS";
break;
case DiscoveryListener.SERVICE_SEARCH_DEVICE_NOT_REACHABLE:
message =
"SERVICE_SEARCH_DEVICE_NOT_REACHABLE";
break;
}
controller.serviceSearchFinished(service,message);//calling
a method from ChatController class
controller = null;
service = null;
}
}
5. Klik Run untuk menjalankan
aplikasi. Kemudian sebagai client Klik Run lagi untuk menjalankan
aplikasi kedua. Kemudian coba aplikasi Bluetooth Chat untuk berkomunikasi antar
keduanya :

Langganan:
Postingan (Atom)








