Лекция: Создание нового приложения для CDC – профиль Foundation Profile
Этот раздел посвящен созданию приложения для CDC (Xlet) для профиля Foundation Profile с использованием эмулятора Embedded Software Architecture Emulator 1.14c компании Ricoh.
Выберите «File > New Project» (Ctrl+Shift+N). В области «Categories» выберите «Mobility». В «Projects» выберите шаблон «CDC Application». Нажмите кнопку «Next».
На экране «Name and Location» присвойте проекту имя MyRicohApplication и укажите местоположение проекта. Не снимайте флажок «Create Main Class». Нажмите кнопку «Next».
На странице «Select Platform» выберите «Ricoh 1.14c».
Нажмите кнопку «Finish». В результате создается новое приложение, главный класс которого открывается в редакторе исходного кода. Структура проекта показана на следующем рисунке. Обратите внимание, что автоматически созданный код основан на профиле. В данном случае главный класс получен на основе jp.co.ricoh.dsdk.xlet.Xlet. В этом профиле отсутствует поддержка редактора GUI Designer среды NetBeans.
Для запуска проекта выберите «Run > Run Main Project». Эмулятор выводит на экран текст «TODO implement makeUIControls».
Теперь можно выполнить отладку проекта, а также создать и выполнить тесты с помощью инфраструктуры JUnit.
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class MobileTest extends MIDlet
implements CommandListener, ItemCommandListener{
private Display display;
private Form LogoForm,QForm;
public MobileTest() {}
//Список вопросов теста
private String quest[]={«Из всех домашних растений Вы предпочитаете кактусы.»,
«Вы уже год не мыли полы, потому что можете случайно задеть компьютерные провода.»,
«Отключение в районе электричества равносильно для Вас стихийному бедствию.»,
«Вы можете не помнить, как выглядят Ваши друзья, но всегда знаете их ники.»,
«Почтальоны пугаются, когда видят знак @ на отправляемых вами письмах.»,
«Вы предпочитаете использовать принтер, а не ручку.»,
«Вы очень удивляетесь, когда в видите надпись ЭТО МЫШЬ рядом с хвостаты зверем.»};
private StringItem str; //Сторка
private ChoiceGroup myCG; //Варианты ответов
private TextField TFName,TFAge; //Имя и возраст
private int cqnum=0; //Номер текущего вороса
private int maxq=quest.length; //Число вопросов
private int summ=0; //Число набранных балов
//Создаем комманды
private Command CMD_GO = new Command(«Вперед», Command.ITEM, 1);
private Command CMD_PRESS = new Command(«Нажать», Command.ITEM, 1);
private Command CMD_FIRST = new Command(«Начать», Command.SCREEN, 1);
private Command CMD_START = new Command(«OK», Command.SCREEN, 1);
private Command CMD_NEXT = new Command(«OK», Command.SCREEN, 1);
private Command CMD_FINISH = new Command(«Закончить», Command.SCREEN, 1);
private Command CMD_EXIT = new Command(«Выход», Command.EXIT, 1);
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 );
LogoForm=new Form(«Mobile Test — Мир ПК»); //Создаем первую форму
LogoForm.setCommandListener(this);
//Добавляем рисунок. Обратите внимание, рисунок загружается в скобках try{}catch{}
try{ Image img=Image.createImage("/Logo.png");
ImageItem FormImg=new
ImageItem(«МирПК — Тест»,img,ImageItem.LAYOUT_CENTER,"");
LogoForm.append(FormImg);
}catch(java.io.IOException ex){}
//Создаем подпись
str = new StringItem(«aRix», «www.mobilab.ru», Item.HYPERLINK);
LogoForm.append(str);
//подключаем ссылку
str.setDefaultCommand(CMD_GO);
str.setItemCommandListener(this);
//Добавляем подэкранные кнопки
LogoForm.addCommand(CMD_FIRST);
LogoForm.addCommand(CMD_EXIT);
//Объявляем обработчик команд
display.setCurrent(LogoForm);
//Создаем форму для вопросов, добавляем на нее кнопки и объявляем обработчик
QForm=new Form(«Вопрос»);
QForm.addCommand(CMD_NEXT);
QForm.addCommand(CMD_EXIT);
QForm.setCommandListener(this);
//Создаем список с вариантами вариантов.
myCG=new ChoiceGroup(«Ответ»,Choice.EXCLUSIVE);
myCG.append(«Нет»,null);
myCG.append(«Иногда»,null);
myCG.append(«Да»,null); }
private void questForm(int qnum) //Форма с вопросами
{ QForm.deleteAll(); //Очищаем форму
//Добавляем вопрос из массива
str = new StringItem(«Вопрос», quest[qnum]);
QForm.append(str);
//Добавляем на форму вырианты ответов
QForm.append(myCG);
//Делаем окно формы видимым
display.setCurrent(QForm); }
public void exitApp()
{ notifyDestroyed(); } // уничтожение MIDlet-а
public void commandAction(Command c, Item item) {
if (c == CMD_GO) {
String text = «Переход по ссылке...»;
Alert a = new Alert(«URL», text, null, AlertType.INFO);
display.setCurrent(a); } }
public void commandAction(Command c, Displayable d) {
if (c == CMD_FIRST) { //Команда: загрузить первый экран
//Создаем форму
Form firstForm=new Form(«Представьтесь пожалуйста»);
//Размещаем на ней поля для ввода текста
TFName=new TextField(«Ваше имя»,"",25,TextField.ANY);
TFAge=new TextField(«Ваш возраст»,"",3,TextField.NUMERIC);
firstForm.append(TFName);
firstForm.append(TFAge);
//Добавляем команды
firstForm.addCommand(CMD_START);
firstForm.addCommand(CMD_EXIT);
firstForm.setCommandListener(this);
//Делаем окно формы видимым
display.setCurrent(firstForm); }
if (c == CMD_START) {//Команда о начале теста
questForm(0); }
if (c == CMD_NEXT) {//Команда перехода к следующему вопросу
cqnum=cqnum+1; //Увеличивем номер вопроса
if (cqnum==maxq-1){ //Проверяем, не последний ли это вопрос. Если да, меняем кнопку.
QForm.removeCommand(CMD_NEXT);
QForm.addCommand(CMD_FINISH); }
summ=summ+myCG.getSelectedIndex(); //Учитываем результат последнего ответа
questForm(cqnum); } //Переходим к следующему вопросу
if (c == CMD_FINISH) { //Команда о получении результата
summ=summ+myCG.getSelectedIndex(); //Учитываем результат последнего ответа
QForm.deleteAll(); //Очищаем форму
QForm.append(""+TFName.getString()+", ну что Вам сказать. ");//Выводим текст
//В зависимости от набранных очков выводим результат теста и соответствующую картинку.
if (summ<1){
QForm.append(«Срочно купите себе компьютер!!!»);
try{
Image img=Image.createImage("/1.png");
ImageItem FormImg=new
ImageItem("",img,ImageItem.LAYOUT_CENTER,"");
QForm.append(FormImg);
}catch(java.io.IOException ex){} }
else if (summ<3){
QForm.append(«На вашем месте, я бы почаще включал компьютер.»);
try{
Image img=Image.createImage("/2.png");
ImageItem FormImg=new
ImageItem("",img,ImageItem.LAYOUT_CENTER,"");
QForm.append(FormImg);
}catch(java.io.IOException ex){} }
else if (summ<7){
QForm.append(«Вы вполне адекватный человек.»);
try{
Image img=Image.createImage("/3.png");
ImageItem FormImg=new
ImageItem("",img,ImageItem.LAYOUT_CENTER,"");
QForm.append(FormImg);
}catch(java.io.IOException ex){} }
else if (summ<7){
QForm.append(«Возможна мама была права, когда пыталась выкинуть Ваш компьютер.»);
try{
Image img=Image.createImage("/4.png");
ImageItem FormImg=new
ImageItem("",img,ImageItem.LAYOUT_CENTER,"");
QForm.append(FormImg);
}catch(java.io.IOException ex){}
}
else
{
QForm.append(«По-моему Вам давно пора лечиться (Если что, я в 7 палате).»);
try{
Image img=Image.createImage("/5.png");
ImageItem FormImg=new
ImageItem("",img,ImageItem.LAYOUT_CENTER,"");
QForm.append(FormImg);
}catch(java.io.IOException ex){}
}
//Удаляем кнопку
QForm.removeCommand(CMD_FINISH);
}
if (c == CMD_EXIT){exitApp();} //Команда «Выход»
}
}