Work/PSP

HelloPSP Midlet 을 만들어 보자

kevin. 2008. 10. 21. 09:31
이번에는 약속대로 HelloPSP Midlet을 만들어 볼겁니다.
먼저 저번에 만든 이클립스를 띄워야겠죠?
그리고 아래와 같은 순서로 프로젝트를 만들어보자구요..

1. 패키지 탐색기에서 마우스 오른쪽 버튼을 누르시고
2. 새로작성->프로젝트->J2ME->J2ME Midlet Suite->다음
3. 프로젝트 이름을 "HelloPSP" 혹은 마음대로 적으세요. 그리고 다음
4. 그리고 뜨는 창은 에뮬레이터 디바이스를 선택할 수 있는 창인데 그냥 그대로 두고 완료를 누르세요.

패키지 탐색기에 정하신 이름의 프로젝트가 만들어졌죠?
그럼 이제 소스를 추가할 차례입니다.
소스 추가도 굉장히 쉬워요..
아래와 같이 이미 마련된 소스를 한번 가져와 보자구요..

1. 프로젝트 이름에 마우스 오른쪽 버튼 누르시고
2. 새로작성->기타->J2ME->J2ME Midlet
3. 새로 만들 Class 이름을 적고 완료

자.. 아무것도 적은게 없는데 소스가 쫙 만들어 졌죠?
기본적으로 Midlet은 Midlet 클래스를 상속해서, startApp, pauseApp, destroyApp 를 오버라이딩 해서 어플을 만들거든요..
그래서 이클립스가 개발자 편하라고 미리 써준 소스인 거에요
이제 이 소스안을 채워봅시다.

HelloPSP.java

import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.lcdui.*;

public class HelloPSP extends MIDlet {
 // 화면을 나타내는 Display 객체입니다.
 private Display display;
 
 public HelloPSP() { 
  // 현재 미들릿 화면을 얻어오구요..
  display = Display.getDisplay(this);
 }

 // 미들릿이 종료될 때 불리는 메소드구요..
 protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
 }

 // 미들릿이 일시정지 할 때 불리는 메소드고요..
 protected void pauseApp() {
 }

 // 미들릿이 실행될때 제일 먼저(생성자 다음으로) 불리는 메소드 랍니다.
 protected void startApp() throws MIDletStateChangeException {
  // HelloCanvas라는 것을 현재 화면에 설정합니다.
  display.setCurrent(new HelloCanvas(display));
 }
}


HelloCanvas.java

import javax.microedition.lcdui.*;

// 미들릿은 캔버스라는 곳에 그림을 그려 화면에 표시할 수 있습니다.
public class HelloCanvas extends Canvas{
 Display display = null;
 
 public HelloCanvas(Display display) {
  this.display = display;
 }
 
 // 캔버스를 상속하면 paint 메소드를 꼭 구현해 주셔야해요..
 public void paint(Graphics g) {
  // LCD 화면의 정보를 얻어와서..
  int width = getWidth();
  int height = getHeight();
  
  // 바탕화면을 파랗게 칠합니다.
  g.setColor(0, 0, 255);
  g.fillRect(0, 0, width, height);
  
  // 좌상단에 빨간 작은 박스도 그려보고요..
  g.setColor(255, 0, 0);
  g.fillRect(0, 0, 25, 25);
  
  // 화면 중간에 Hello PSP 라고 써봅니다.
  g.setColor(0, 0, 0);    
  g.drawString("Hello PSP", width/2, height/2, Graphics.TOP|Graphics.HCENTER);
 }
}


자.. 이렇게 하시고요..
상단 TooBar에 보시면 벌레 모양 아이콘 오른쪽에 비디오 재생 과 비슷하게 생긴 아이콘이 있어요. 아이콘 오른쪽에 아래 삼각형을 누르면 서브 메뉴로 "실행" 이라는 놈이 나옵니다.
못찾으시겠으면 프로젝트 이름을 마우스 오른쪽으로 클릭하시고 실행도구->실행을 누르셔도 되요.
Midlet 탭에서 Project에는 Browse를 누르셔서 방금 만든 프로젝트를 선택하시고요
Excutable에는 Midlet을 선택하시고 Search를 누르셔서 Midlet를 Extends한 클래스 이름을 고르시면 됩니다.
그리고 적용을 누르시고 실행을 누르세요.
잘 하셨으면 아래와 같은 화면이 나옵니다.

흠..만족스러운 결과죠?
그치만 우리는 이걸 PSP에서 보고 싶은거니깐요..
PSP에서 한번 봐봅시다.
PSP에서 보려면 현재 프로젝트를 jar 형식으로 배포해야합니다.
그러기 위해서 프로젝트 이름에 마우스를 대고 오른쪽 버튼을 누른 뒤
J2ME -> Create Package를 눌러줍니다.
그러면 프로젝트내의 deployed 폴더안에 프로젝트이름.jad와 프로젝트이름.jar가 생성됩니다.
아주 쉽죠? 이중 jar 파일을 PSP의 아무 디렉토리에다가 옮기고 PSPKVM을 실행한 뒤,
AMS에서 이 jar 파일을 선택해주면됩니다.
그럼 아래와 같이 실행된 모습을 보실 수 있습니다.

별것도 아닌데 쓰면 이렇게 기네요..
그럼 다음에는 좀 더 재미있는 어플을 만들어보자구요~