[j2me] Пишем простой мидлет

Тема закрыта
839
.
¤
И так решил написать мини-статью - мануал по созданию простейшего java-мидлета для телефона.

Мидлет будет представлять собой следующее:

1 экран содержащий заголовок, изображение и текстовую строку и текстовые данные, загружаемые из txt-файла.

Что нам потребуется:
1. Сначала устанавливаем J2SE SDK (Java SE Development Kit); у кого установлена "зверосборка", тому можно этот шаг пропустить

2. Устанавливаем Sun Java Wireless Toolkit 2.5.2_01 for CLDC (используется в данном примере). Вы можете использовать и другой софт.

3. Текстовый редактор. Подойдет ваш рабочий редактор для php.
.
¤
Далее...

1. Если у вас установлена XP, открываем папку C:\Documents and Settings\ВЫ\j2mewtk\2.5.2\apps (если Vista / 7, ищите по аналогии) и распаковываем в нее папку MyFirstMidlet из прикрепленного архива myfirstmidlet_apps.zip

2. Запускаем Wireless Toolkit 2.5.2, жмем Open Project - проект загружен.
- если хотите протестировать мидлет прямо в программе, нажимаем: Build -> Run, в окне эмулятора увидите мидлет в работе.

3. Для компиляции мидлета заходим в меню: Project -> Package -> Create package.

4. Скомпилированный и готовый к работе мидлет вы найдете в папке C:\Documents and Settings\ВЫ\j2mewtk\2.5.2\apps\MyFirstMidlet\bin
Прикрепленные файлы:
.
¤
Структура папок проекта:

- /res/ - в этой папке находятся файлы ресурсов, используемых в будущем мидлете (cover.jpg, data.txt, icon.png)
- /src/ - в этой папке находится файл info.java, это будущий класс info.class. Файлы *.java вы можете создавать в любом удобном для вас текстовом редакторе с подсветкой синтаксиса java, в кодировке ANSI.

В нашем случае файл info.java содержит следующий код:
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

//Подключаепм пакет для работы с вводом/выводом
import java.io.*;

public class info extends MIDlet implements CommandListener{

    private Display display;
    private Form MainForm; // Форма
    private Image img;     // Изображение
    private StringItem StrFromTxt; //Строка, которая будет грузиться из текстового файла
    private Command CMD_EXIT = new Command("Выход", Command.EXIT, 1); //Команда выхода из мидлета

    public info(){}

    protected void destroyApp( boolean unconditional ) throws MIDletStateChangeException
     {
       exitApp();
      }

    protected void pauseApp(){}

    protected void startApp() throws MIDletStateChangeException
     {
         if( display == null )
              {
                  initApp( ); // Этот код выполняется при запуске мидлета
              }
     }

    private void initApp()
     {
       display = Display.getDisplay( this );
         MainForm = new Form("Metallica"); // Создаем форму
         MainForm.setCommandListener(this); // Ловим команды от формы
         MainForm.addCommand(CMD_EXIT); // Добавляем кнопку «Выход» на панель

         String str=getText("/data.txt"); //Грузим в текстовую переменную данные из файла

        try {
            img=Image.createImage("/cover.jpg");         
            } catch(IOException ioe)
                {
                  System.out.print(ioe.getMessage());
                }
                if (img!=null)
                    MainForm.append(img);

         //Создаем StringItem компонент на основе загруженного текста
         StrFromTxt = new StringItem("Альбом: ",str);

         MainForm.append(StrFromTxt); // Добавляем на форму компонент с текстом
         display.setCurrent(MainForm); // Отображаем форму
     }


    public void exitApp()
     {
         notifyDestroyed(); // уничтожение MIDlet-а
     }

    public void commandAction(Command c, Displayable d) {
        if (c == CMD_EXIT){exitApp();}     // Команда "Выход"
    }

private String getText(String path) {
        DataInputStream dis = new DataInputStream(getClass().getResourceAsStream(path));
        StringBuffer strBuff = new StringBuffer();
        int ch = 0;
        try {
            while ((ch = dis.read()) != -1) {
                strBuff.append((char ) ((ch >= 0xc0 && ch <= 0xFF) ? (ch + 0x350) : ch));
            }
            dis.close();
        } catch (Exception e) {
            System.err.println("ERROR in getText() " + e);
        }
        return strBuff.toString();
}

}
.
¤
Для создания данного мидлета была использована статья "Пишем софт для телефона" (web) и исходники из нее. (ц) www.mobilab.ru
.
¤
Результат компиляции:
Прикрепленные файлы:
Всего: 5