И так решил написать мини-статью - мануал по созданию простейшего 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