Для приложения-дешифратора можно выбрать следующую минимальную
конфигурацию: J2ME, MIDP 2.0, CLDC 1.0. Сотовый телефон должен
поддерживать эту минимальную конфигурацию. Выберите в качестве минимальной
конфигурации MIDP 2.0 для того, чтобы была возможность
вызова из приложения. Для отладки программы используйте эмулятор мобильного
телефона, интегрированный в среду разработки мобильных приложений SunWirelessToolkit.
Рисунок 2. Блок-схема модернизированного дискового телефонного аппарата
Эксперимент № 4
С трубки дискового телефонного аппарата вытащите микрофон и динамик, замените их на те, что были в минигарнитуре; кнопку минигарнитуры замените на рычажный переключатель, так что когда трубка опущена, кнопка на минигарнитуре нажата. Это необходимо для работы функции завершения вызова, путём опускания трубки на дисковый телефонный аппарат.
. Вынесите разъем для зарядки наружу корпуса дискового стационарного
телефона, потом соедините дисковый номеронабиратель с клавишей «ОК» сотового
телефона, а рычажный переключатель «со сглаживанием» с другой клавишей («#»)
сотового телефона. И в самую последнюю очередь вынесите динамик из сотового
телефона, соедините его с выключателем, тем самым сделав переключатель в режим
«Без звука».Соединения старого дискового телефонного аппарата с сотовым
телефоном выполните маломощным паяльником.
Рисунок 3. Фото модернизированного дискового телефонного аппарата.
Кейс«Мобильный редактор VisualBasic для ОС Android»
Язык программирования VisualBasic был создан в 1964 году двумя профессорами из Dartmouth College - Джоном Кенеми и Томасом Куртцом для обучения студентов навыкам программирования. Язык получился настолько простым и понятным, что через некоторое время его начали применять и в других учебных заведениях. В 1975 году, с приходом первых микрокомпьютеров, эстафету Basic приняли Билл Гейтс и Пол Аллен, основатели Microsoft. Именно они создали новую версию Basic для первых компьютеров "Альтаир" (MITS Altairs), способную работать в 4КБ оперативной памяти. Со временем именно эта версия и превратилась в один из самых популярных языков программирования в мире.
VisualBasic успешно изучается во многих школах России, а так же Basic присутствует во многих заданиях на ЕГЭ. Но разработчики этих языков не поддерживают разработку редакторов на мобильные платформы и операционные системы. Известно, что в последнее время приобрели популярность устройства на ОС Android, соответственно привлекающие своей мобильностью и производительностью.
У многих часто нет возможности изучать данный язык дома за стационарным компьютером или ноутбуком, поэтому появляется необходимость в разработке редактора и лаунчера кода языка на мобильную платформу. Такие мобильные редакторы уже имеются для языков: C++, Java, Python и тд.- это операционная система для мобильных устройств, которую можно встретить в коммуникаторах, планшетных ПК, нетбуках и смартфонах. Многие крупные производители проводят эксперименты и внедряют эту программную платформу в свою технику. Например, уже сейчас существуют часы и TV-приставки с OS Android, и этим никого не удивишь.
Давайте теперь вернемся к главной теме статьи, а именно к истории появления ОС Android.
В 2003 году в калифорнийском штате Пало Альто, четверо друзей Энди Рубин, Рич Майнер, Ник Сирс и Крис Уайт открыли небольшую компанию Android inc. На то время у компании уже был набор программных разработок для будущей операционной системы.
Что нужно делать?
Твоя цель:Создать мобильную программу способную к трансляции VB-кода в Java-код с возможностью в последствии перевода кода на машинный язык. Создать редактор и лаунчер графического интерфейса, который содержит основные элементы (TextBox, Label, CommandButton).
Что посмотреть- почитать?
1.#"896720.files/image004.gif">
Рисунок 1. Схема-шаблон
По данной схеме первым делом код на языке Basic транслируется, переводится в Java код по средствам замены или подстановки синтаксиса. А уже на следующем этапе используется библиотека BeanShell для внедрения транслированного кода в JVM(Java машину).
Рассмотрите трансляцию и внедрение транслированного кода в JVM более детально.
Этапы:
Первым делом происходит трансляция, под трансляцией подразумевается перевод кода на VisualBasic в Java код.
Для того чтобы написать свою программу посмотрите пример исходного кода и транслированного кода:
Исходный кодa As Integer= 5i = 0 To 5 = a + 1i
Транслированный код;= 5;(int i = 0; i != 5; i++) { = a + 1;
}
2. На втором этапе транслированный код в переменной String попадает в интерпретатор BeanShell и внедряется в JVM.
3. После внедрения код начинает выполняться, если на пути встречается функция вывода или ввода информации, код обращается к индексированным источникам вывода или ввода информации и получает ее.
Вид двух страниц конечной ступени иерархии интерфейса.
Рис 2 Экран
Рис3 Экран GUI запуска
редактирования программного кода
Приложение В
Отзывы от учеников.
Рисунок 1.
Рисунок 2.
Рисунок 3.
Исходный код программы-дешифратора.
importjavax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;class start extends MIDlet{
private draw_app draw;
public void startApp() {
Display display = Display.getDisplay(this);
draw = new draw_app(this);
display.setCurrent(draw);
}
public void pauseApp() {
}
public void destroyApp(boolean destroy){
}
}javax.microedition.lcdui.*;java.lang.*;class draw_app extends Canvas{
public static int NOOP = 2;
public static int INPUT_NUMBER = 3;
public int CALL_NUMBER = 0;
public static int KEY_DESTROY = 699;
public String NUMBER = new String();
private long last_time = 0;
private int number = -1;
private String message = new String();
private start midlet;
public draw_app(start midlet) {
NUMBER = new String();
this.midlet = midlet;
setFullScreenMode(true);
repaint();
}
public void paint(Graphics g) {
g.setColor(0);
g.fillRect(0, 0, getWidth(), getHeight());
if(KEY_DESTROY!=699) {
g.setColor(0x00FF00);
if(NUMBER!=null) {
g.drawString(NUMBER,0,0,0);
} else {
g.setColor(0xFF0000);
g.drawString("NULL NUMBER", 0, 0, 0);
}
if(message!=null) {
g.setColor(0x0000FF);
g.drawString(message,0,(g.getFont()).getHeight(),0);
}
} else {
g.setColor(0x00FF00);
g.drawString("Please press key",0,0,0);
g.drawString("for break call",0,(g.getFont()).getHeight(),0);
}
}
public void keyPressed(int key_code) {
if(KEY_DESTROY!=699) {
if(key_code==KEY_DESTROY) {
STATUS=NOOP;
NUMBER=new String();
number=-1;
}
if(STATUS!=CALL_NUMBER) {
if(STATUS==INPUT_NUMBER) {
if(last_time+200L>System.currentTimeMillis()) {
number++;
} else {
number+=2;
if(number>9) {
number=0;
}
NUMBER = NUMBER.concat(String.valueOf(number));
STATUS = NOOP;
}
}
if(STATUS==NOOP) {
STATUS = INPUT_NUMBER;
number = -1;
}
message = "pressed/number:"+(number+2);
if(NUMBER.length()>=11) {
call();
}
repaint();
}
} else {
KEY_DESTROY = key_code;
}
}
public void keyReleased(int key_code) {
if(KEY_DESTROY!=699) {
if(key_code==KEY_DESTROY) {
STATUS=NOOP;
NUMBER=new String();
}
if(STATUS!=CALL_NUMBER) {
last_time = System.currentTimeMillis();
message = "released/number:"+(number+2);
if(NUMBER.length()>=11) {
call();
}
repaint();
}
}
}
public void call() {
message = "call this number";
STATUS = NOOP;
repaint();
try{
Display.getDisplay(midlet).vibrate(1000);
midlet.platformRequest("tel:"+NUMBER);
NUMBER = new String();
number = -1;
} catch (Exception e) {
message = "error call number";
}
}
}