Nokia-Symbian

tidak berlebihan mungkin saat saya katakan symbian os sekarat, karena kita tak pernah tau kapan dia akan bangkit kembali.perusahaan perangkat komputer multinasional besutan Bill Gates, Microsoft resmi menyelesaikan pembelian bisnis ponsel asal Finlandia, Nokia dengan nilai 7,5 miliar dolar AS, Jumat 25/4. Hal tersebut berarti mengakhiri produksi ponsel oleh Nokia.

sungguh sangat disayangkan…, saya pikir, nokia akan kembali menggebrak pasar dengan inovasi-inovasi pemrograman untuk symbian os. namun, kenyataannya, nokia telah berpindah tangan pada microsoft. nokia ibarat kata seorang yang telah tua, dan diadopsi microsoft. tak pernah dibayangkan saat muda dia sangat berjaya.

namun, itulah teknologi, selalu ada yang baru menggantikan yang lama. prinsip hukum rimba, yang kuat yang akan bertahan, mungkin juga berlaku untuk teknologi ponsel…:D

http://www.jpnn.com/read/2014/04/26/230868/Resmi-Dibeli-Microsoft,-Nokia-Hentikan-Produksi-

ini lanjutan dari bab sebelumnya, meletakkan gambar di layar. kalau belum baca, silakan mampir kesini dulu

ceritanya, gambar yang tadi sudah saya masukkan, akan saya gerakkan ke kiri, kanan, atas dan bawah dengan menggunakan tombol navigasi yang ada di layar HP.

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;

public class NavMidlet extends MIDlet implements CommandListener {

private Command exitCommand;
Displayable nd;
Image image = null;

public NavMidlet() {
try {
image = Image.createImage(“/luigi.png”);
} catch (Exception e) {
}

Display display = Display.getDisplay(this);
nd = new Navigate2Canvas(image);
exitCommand = new Command(“exit”, Command.EXIT, 1);
nd.addCommand(exitCommand);
nd.setCommandListener(this);
display.setCurrent(nd);
}

public void startApp() {
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

public void commandAction(Command c, Displayable s) {
notifyDestroyed();
}
}

class NavigateCanvas extends Canvas {
private Image image;
//disini saya tambahkan koordinat awal, yang di set di angka (0,0), artinya diletakkan di posisi kiri atas
private int newX = 0;
private int newY = 0;
private int stepX = 0;
private int stepY = 0;

public NavigateCanvas(Image image) {
this.image = image;
newX = 0;
newY = 0;
//ini maksudnya, gerakkannya dibuat 4 step/langkah untuk mencapai ujung satu ke ujung lainnya, misalkan dari ujung kanan bawah ke ujung kanan atas, perlu 4 langkah, jadi 1 layar dibagi 4
stepX = getWidth() / 4;
stepY = getHeight() / 4;
}

public void steppingXY(int x, int y) {
newX += x;
newY += y;
}

public void paint(Graphics g) {
int width = this.getWidth();
int height = this.getHeight();

g.setGrayScale(255);
g.fillRect(0, 0, width – 1, height – 1);
g.setGrayScale(0);
g.drawRect(0, 0, width – 1, height – 1);
g.translate(newX, newY);
g.drawImage(image, 0, 0, g.TOP | g.LEFT);
}

protected void keyPressed(int keyCode) {
//disinilah action keypressed terjadi. jika tombol navigasi ditekan, maka akan naik/turun/kekanan/kekiri lah gambar nya

int gameaction = getGameAction(keyCode);
switch (gameaction) {
case DOWN:
steppingXY(0, stepY);
break;
case UP:
steppingXY(0, -stepY);
break;
case RIGHT:
steppingXY(stepX, 0);
break;
case LEFT:
steppingXY(-stepX, 0);
break;
}
repaint();
}
}

silakan mencoba!

gambar

memasukkan gambar ke dalam layar HP, dapat menggunakan low level user interface. caranya gimana? yuk kita intip source code berikut ini :

import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
//import ini dilakukan untuk mengambil fungsi2 dari package lcdui dan midlet

public class GambarMidlet extends MIDlet implements CommandListener {

private Command exitCommand;
Displayable nd;
Image image = null;
//masukkan gambar yang kita inginkan, saya memakai ukuran 50 x 52 px
// jangan lupa, gambarnya diletakkan satu folder dengan file .java-nya. letakkan dalam folder src ya!

public GambarMidlet() {
try {
image = Image.createImage(“/luigi.png”);
} catch (Exception e) {
}
// selain gambar, saya juga ingin menyertakan command exit supaya kita bisa keluar program dengan mudah

Display display = Display.getDisplay(this);
nd = new Navigate2Canvas(image);
exitCommand = new Command(“exit”, Command.EXIT, 1);
nd.addCommand(exitCommand);
nd.setCommandListener(this);
display.setCurrent(nd);
}

public void startApp() {
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}

public void commandAction(Command c, Displayable s) {
notifyDestroyed();
}
}

class Navigate2Canvas extends Canvas {
private Image image;
public Navigate2Canvas(Image image) {
this.image = image;

}

public void paint(Graphics g) {
int width = this.getWidth();
int height = this.getHeight();
g.setGrayScale(255);
g.fillRect(0, 0, width – 1, height – 1);
g.setGrayScale(0);
//disini saya meletakkan gambar saya di bagian kiri atas, jadi, anchornya top-left
g.drawImage(image, 0, 0, g.TOP | g.LEFT);
}
}

klik > run main project > pilih gambarmidlet, jadi deh……..

arsitektur lcdui

Canvas adalah subclass dari Displayable. Canvas memungkinkan prorgammer untuk mengontrol sepenuhnya layar, hal ini biasa digunakan pada Low Level User Interface. Canvas merupakan class abstract yang harus di-extend atau dijadikan sebagai subclass sebelum sebuah aplikasi memfungsikan class tersebut. Canvas dapat digunakan bersamaan dengan Screen sebagai high-level Displayable. Canvas akan mendefinisikan method-method tanpa event-handling. Aplikasi harus meng-override class-class tersebut untuk meng-handle event. Canvas akan mendefinisikan sebuah method abstract yang dinamakan paint(). Sebuah aplikasi yang akan menggunakan Canvas harus mengimplementasikan method paint().

canvas midlet

dibawah ini source code beserta penjelasannya :

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Graphics;
import javax.microedition.midlet.MIDlet;

public class CanvasMidlet extends MIDlet {

//constructor
public CanvasMidlet() {
}

//membuat object MyCanvas, dan meletakkan canvas pada display
public void startApp() {
Canvas canvas = new MyCanvas();
Display display = Display.getDisplay(this);
display.setCurrent(canvas);
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}
}

//class MyCanvas
class MyCanvas extends Canvas {
public void paint(Graphics g) {
//memberi warna merah : kode merah = R, G, B = 255, 0, 0
// kode kuning = 255, 255, 0, kode putih = 255, 255, 255, kode biru = 0, 0, 255

g.setColor(255, 0, 0); //–> yang ini berarti backgroundnya warna merah

//menggambar rectangle / persegi panjang, dengan panjang dan lebar sesuai layar
// bentuk umum menggambar persegi panjang adalah public void fillRect(int x, int y
int width, int height
) int x dan int y diisi koordinat awal penggambaran persegi panjang

g.fillRect(0, 0, getWidth(), getHeight()); // yang ini artinya membuat background persegi panjang, sebesar layar

g.setColor(255, 255, 255);

// menggambar tulisan Hello World! ke layar, dengan koordinat x, dan y 1/2 lebar dan 1/2 panjang, artinya, tulisan itu akan terletak di tengah2….., g.TOP | g. HCENTER artinya adalah anchor. penjelasannya ada di bawah

g.drawString(“Hello World!”, getWidth()/2, getHeight()/2, g.TOP | g.HCENTER);

}
}

mau diletakkan dimana sebuah tulisan? anda bisa mengatur anchor nya, silakan lihat gambar ini untuk bisa memahami, apa yang saya maksud.

anchor

Selamat mencoba! keep triyng…..

philips-4875-83754-1-product

remote

saya memiliki sebuah dvd player, yang menurut saya, memiliki desain buruk. dalam panel dvd tersebut, hanya terdapat 3 tombol,yaitu power, open, dan play/pause seperti pada gambar. begitu juga remotenya, kurang user friendly, mengapa? karena tidak ada tombol untuk memilih urutan 1, 2, 3, dst jika kita sedang menyetel lagu, maka kita harus menekan tombol kembali (back dan foward), mencari satu-satu. bayangkan jika suatu saat remote terselip entah dimana, kemudian kita ingin menyalakan bagian tertentu dari dvd, maka kerepotan lah yang didapat oleh user. oleh karena itu, desain penting dalam membuat sebuah produk.

perhatikan gambar berikut ini mengapa remote TiVo memiliki desain yang lebih baik?

desain remote

perhatikan pula peletakkan konektor pada CPU berikut ini :
ambigu

bagaimana seharusnya menyusun konektor dan keterangannya agar lebih mudah dimengerti?

bagaimana membuat lebih logik

demikian sekilas mengenai pentingnya sebuah desain.