- •Что Вам необходимо?
- •Создание miDlet-а
- •О том, что скрыто от наших глаз
- •А дальше?
- •Ресурсы
- •Инсталяция и запуск Tomcat
- •Написание исходного кода Servlet-а
- •Компиляция Servlet – а
- •Развертывание Servlet-а
- •Как обратиться к Servlet-у из miDlet-а
- •Замечания
- •Заключение
- •Дейтаграммы
- •Получение Web контента
- •Когда какой протокол использовать?
- •Стек протоколов
- •Профили
- •Bluetooth устройства и сети
- •Системные требования
- •Java api For Bluetooth — организация и пакеты
- •Анатомия miDlet-ов, использующих jsr 82
- •Использование Java apIs for Bluetooth
- •Использование Bluetooth в j2me приложениях. (jsr-82) - Часть 2. Обзор Connection и Device Management api Обзор Connection api
- •Типы Bluetooth соединения
- •Создание соединения
- •Ожидание соединения
- •Отправка и получение даннях
- •Обзор Device Management api
- •Удаленное устройство
- •Класс устройства
- •Получение информации о настройках Bluetooth устройства
- •Интерфейсы pim api
- •Классы pim api
- •Использование pim api
- •Использование эмулятора j2me Wireless Toolkit 2.2 для тестирования pim списков
- •Особенности спецификации Sony Ericsson
- •Свойства системы
- •Классы и интерфейсы FileConnection api
- •Операции ввода/вывода
- •Получение информации о файлах и каталогах
- •Вычисление Экспоненты
- •Гиперболические функции
- •Вычисление натурального логарифма
- •Вычисление арксинуса и арккосинуса
- •Вычисление арктангенса
- •Обзор mmapi
- •Механизм обработки мультимедмйной информации
- •Mmapi пакеты
- •Использование mmapi
- •Последовательности нот
- •Проигрывание мультимедийных файлов
- •Воспроизведение видео
- •Использование камеры
- •Поддерживаемые форматы
- •Ограничения использования mmapi в wtk
- •Пример простого медиаплеера
- •Создание midp приложения с использованием Visual Designer-а.
- •Редактирование Java исходников
- •Создание midp приложений с использованием Source Editor Создание нового j2me midp проекта
- •Редактирование Java исходников
- •Компиляция и запуск проекта
- •Выбор платформы эмулятора
- •Использование конфигурирования
- •Добавление конфигурации
- •Настройка конфигурации
Гиперболические функции
Имея функцию для вычисления экспоненты, легко найти значения гиперболических функций.
Имеет смысл предварительно записать значение exp(x) во вспомогательную переменную, которую затем использовать для вычисления по формулам.
Вычисление натурального логарифма
Натуральный логарифм можно представить в виде суммы:
Вычислять значение логарифма непосредственно по этой формуле не очень эффективно. Для оптимизации алгоритма вычисления можно воспользоваться известными соотношениями
Представим число x в виде
где b<1, a-целое, тогда
Для того чтобы представить число x в требуемом виде, нужно найти позицию символа “E” в строковом представлении числа x, тогда a равно числу, записанному правее символа “E” плюс 1, a b – числу записанному левее “E”, деленному на 10.
Ниже представлен код, реализующий алгоритм вычисления натурального логарифма:
private double MLn(double x0){
double x=x0;
double y=0;
//Получаем показатель степени.
String s0=""+x;
int i=s0.indexOf("E");
String s1=s0.substring(i+1, s0.length());//Правее E
String s2=s0.substring(0, i);//Левее E
double a=0,b=0;
a=Double.parseDouble(s1)+1;
b=Double.parseDouble(s2)/10;
//Вычисление Логарифма b как суммы ряда Тейлора
int n=1;
double sn=1;
while (sn>(1E-16)*n){
sn=-sn*(b-1);
y=y+sn/n;
n=n++;
}
y=y+a*2.302585092994046;
return y;
}
Вычисление корней, степеней и логарифмов
Имея функцию для вычисления натурального логарифма, легко вычислить следующие функции:
Вычисление арксинуса и арккосинуса
Вычисление обратных тригонометрических функций arcsin и arcos сводится к вычислению рядов:
Ниже приведен алгоритм вычисления арксинуса.
private double Marcsin(double x0){
double x=x0;
if (x0<0){x=-x0;}
double y=x;
int n=1;
double sn=x;
while (sn>1E-16){
sn=sn*(2+1.0/n)*0.5*x*x;
y=y+sn/(2*n+1)/(2*n+1);
n=n+1;
}
if (x0<0){y=-y;}
return y;
}
Вычисление арктангенса
Предложенная формула эффективна для вычисления арктангенса малого аргумента. Для построения алгоритма эффективного вычисления арктангенса от больших x, целесообразно воспользоваться формулой:
Ниже предлагается переписанный для java алгоритма, который написал товарищ Nikitin V.F. в 2000 году.
Вначале нужно проверить знак x, если x<0, нужно изменить знак, сделав аргумент неотрицательным.
Затем если x>1, обратить его: x=1/x.
Затем сокращаем область определения (запоминая число сделанных шагов), используя формулу:
до тех пор, пока x не окажется в интервале [0,pi/12].
После этого можно вычислять y=arctg(x) по формуле Тейлора.
Сместим результат y на p/6 необходимое число раз
Если x было больше 1, то результат
Если x было отрицательным, то результат
private double MArctg(double x0) {
int sp=0;
double x,x2,y;
x=x0;
if(x<0) {x=-x;}
if(x>1) {x=1.0/x;}
//Уменьшаем интервал области аргумента
while(x>0.2617993877991495) {
sp++; //Вспомогательный счетчик шагов
x=(x*1.732050807569-1)/(x+1.732050807569);
}
//Вычисляем ряд Тейлора
y=x;
int n=1;
double sn=x;
while (sn>1E-16){
sn=sn*(2+1.0/n)*0.5*x*x;
y=y+sn/(2*n+1)/(2*n+1);
n=n+1;
}
//Смещаем все на pi/6 необходимое число раз
y=y+sp*0.523598775598
if(x0>1) a=0.2617993877991495-a;
if(x0<0) y=-y;
return y;
}
Завдання
Проробити практичний матеріал, розглянутий в лабораторній роботі.
Розробити власну программу – калькулятор, максимальна кількість ф-й.
Лабораторная работа №7
Работа со звуком и видео в J2ME MIDP 2.0. Библиотека Mobile Media API (MMAPI)
Mobile Media API (MMAPI) - дополнительный пакет, который поддерживается мультимедийными устройствами. Стандартная Java спецификация, заданная в JSR 135, отличается своей гибкостью. Она рассчитана на работу с произвольными протоколами и форматами.
В данной лабораторной работе рассматривается техническая реализация архитектуры MMAPI и ее практическое использование.