Select your language:

Home Главная | Registration Регистрация | Login Вход

Menu Меню сайта
Statistics Статистика

Total online: Онлайн всего: 3
Guests: Гостей: 3
Members: Пользователей: 0
Study entry Форма входа
Логин:
Пароль:
Забыл пароль | Регистрация

Ссылки:

try {

// шдем ресурс с именем melod.wav InputStream input =

getClassO.getResourceAsStream("melod.wav");

// создаем проигрыватель

Player player = Manager.createPlayer(inputr "audio/X-wav");

11 воспроизводим player.start(); } catch (IOException zxz) {} catch (MediaException zmz) {}

}

public void pauseAppO {}

public void destroyApp(boolean unconditional){}

public void commandAction(Command C, Displayable d) {

if (c == exitMidlet) {

destroyApp(false);

notifyDestroyed(); . .

}

if (c == pi) {

WawPlay();

}

} }

9.4. Воспроизведение тональных звуков

При создании звукового сопровождения к играм и приложениям в основном используются так называемые тональные звуки, генерируемые телефоном. Мобильные телефоны ограничены в системных ресурсах, поэтому воспроизведение wav, щрЗ файлов не всегда возможно.

Воспроизведение ТПОНОЛЪНЫХ звуков происходит примерно тем же способом, что и воспроизведение wav-файлов, рассмотренное в предыдущем разделе. Создание тональных звуков строится на основе секвенсора, используемого музыкантами. То есть, в вашем распоряжении имеются семь нот, которые могут быть сыграны в любой тональности. Указав определенную последовательность нот в Заданном массиве данных, вы сможете их впоследствии последовательно воспроизвести. В принципе, аналогичные действия можно произвести в любом те-

лефоне, где в музыкальном редакторе вы выстраиваете некую последовательность определенных символов, обозначающих ноты. Указав нужную последовательность нот, вы получаете готовую мелодию, созданную при помощи тональных звуков.

Перейдем к практике. Первым делом необходимо создать те самые семь нот. В классе ToneControl пакета javax.microeditipn.mediaxontrol.*, доступна константа С4, которая по своему звучанию соответствует ноте «До». Для того чтобы создать, например ноту Be, можно воспользоваться следующей конструкцией кода:

byte Re - (byte)(ToneControl.С4+1);

Для создания последующей ноты Ми нужно прибавить к ноте До (то есть С4), число два и так далее. Когда закончатся все семь нот, то вы переходите к следующей октаве, что и предопределяет разные тональности звукового сопровождения. Всего можно использовать значение от 0 до 127.

Затем создается массив данных, можно назвать его секвенсором, в котором указывается последовательность нот. Синтаксис, используемый в секвенсоре, строго определен, и его необходимо правильно использовать. Например, имеется следующий массив данных, характеризующийся как секвенсор:

byte[] Nota = {...};

В этом массиве данных первой строкой кода должно идти указание версии используемого атрибута.

ToneCont го1.VERSION, 1,

Затем задается скорость воспроизведения с помощью целочисленного значения, которое может варьироваться от 5 до 127. Например:

ToneControl.TEMPO, 30,

Далее необходимо дать команду, указывающую начало блока последовательности нот для воспроизведения, например:

ToneControl.BLOCK_START, 0,

И только после этого идет последовательность нот. Между нотами ставится обязательно длина ноты обычно заданная переменной, и ее диапазон может быть от 2 до 16. Например:

byte d = 4;

Re,d,Mi,d,Re,d.

Между воспроизведением нот можно использовать паузы для создания выразительной мелодии. Паузазадается с помощью константы SELENCE, например:

byte stop = ToneControl.SELENCE; byte d = 4;

Тогда последовательность нот может быть следующей:

Re,d,stop,d,Mi,d,stop,d,stop,d,Re,d,

После того как вы задали всю последовательность нот, необходимо четко указать конец блока с помощью константы BLOCK^END следующим образом:

ToneControl.BLOCK_END, О,

На каждую константу BLOCK_START, должна присутствовать константа BLOCKEND. Иначе возникнет ошибка при компиляции.

В конце нужно воспользоваться константой PLAYBLOCK для воспроизведения блока последовательности нот. После этого сшданньш секвенсор можно использовать длявоспроизвелснияпроигрывателемтональныхзвуков. Посмотрите налистинг 9.2, где показана демонстрационная программа, воспроизводящая все семь нот одной октавы.

I * *

листинг 9.2 класс TonMIDlet' воспроизводит тональные звуки

*/

import javax.microedition.lcdui. * ; import javax.microedition.midlet. * ; import javax .microedition.media . * ; import javax.microedition.media. control. *; import j ava. io. * ;

public class TonMIDlet extends MID1 let implements CommandListener {

// команда выхода

private Command exitMidlet = new Command ( "Выход", Command. EXIT, 0) ;

// команда воспроизведения

private Command pi = new Command С "Играть", Command. OK, 1) ;

// объект mydisplay представляет экран телефона private Display mydisplay;

public TonMIDlet()

{

mydisplay = Display .getDisplay(this) j

public void startAppO {

Form Is = new Form ( "Тональные звуки");

' ' добавляем команду выхода

Is.addCommand(exitMidlet);

// добавляем командучвоспроизведения

Is.addCommand(pi) ;

Is.setCommandListener(this);

f ( отражаем текущий дисплей mydisplay. set Current (Is),;

}

private void TonPlayO // нота До

byte Do = ToneControl . C4;

/ / нота Ре

byte Re = (byte) (ToneControl.C4 + 1) ,-// нота Ми . byte Mi = (byte) (ToneControl.C4 + 2);

/ / нота Фа.

byte Fa = (byte) (ToneControl.C4 + 3);

// нота Соль

byte So = (byte)

// нота Ля

byte Lj = (byte) (ToneControl.C4 +' 5) -

// нота Си

byte Si = (byte) (ToneControl.C4 + 6) ;

/ / пауза

byte stop = ToneControl.SILENCE;

// скорость воспроизведения тональных звуков byte speed = 30;

// продолжительность воспроизведения ноты byte pr = 4;

// секвенсор byte[] Nota = {

// атрибут, задающий номер версии ToneControl.VERSION, 1,

скорость воспроизведения ToneControl.TEMPO, speed,

// начало блока ToneControl.BLOCK_START, 0,

// последовательность нот для воспроизведения Do,pr,stop,pr,Re,prr stop,prPMi ,pr, stop,pr, Fa,pr, stop,pr, So,pr, stop,pr,Lj,pr,stop,pr,Si,pr, // конец блока ToneControl.BL0CK_END, 0, // воспроизведение" блока

{

TonPlay() ;

} }

В основе программы излистинга 9.2 лежитмодель, используемая в предыдущем разделе при воспроизведении wav-файла. В классе TonMIDlet создается пустая формаклассом Formn назначаются две команды: выход из программы и воспроизведение тональных звуков. Принажатиина кнопку Играть, задейству-ется метод TonPlay (), где создаются ноты, секвенсор, после чего происходит воспроизведение последовательности нот.

ToneControl. PLAY_BLOCK, 0 ,

// воспроизводим тональные звуки из секвенсора try{

Player player =

Manager. createPlayer (Manager .T0NE_DEVICE_L0CAT0R) ; player ,realiz.e(); .

ToneControl toncontrl =

(ToneControl)player.getControl(«ToneControl»); toncontrl.setSequence(Nota); player.start(); } catch (IOException zxz) {}

catch (MediaException zmz) {} }

public void pauseApp() {}

public void destroyApp (booleanunconditional} {}

public void commandAct ion (Command с, Displayable d) {

if (c == exitMidlet) {

destroyApp ( false);. notifyDestroyed();

}

if (c == pi)

Заключение

Технология Java 2 Micro Edition предоставляет разработчику программного обеспечения широки» спектр хорошо продуманных интерфейсов, классов, методов и констант, на основе которых происходит построение приложений для телефонов, КПК, телевизионных приставок, органайзеров, пейджеров и других мобильных устройств. Платформа Java 2 Micro Edition - это стандарт программирования мобильных телефонов, признанный такими известнейшими компаниями как Nokia, Siemens, Sony Ericsson, Motorola, Samsung, Symbian, Palm Computing, Sharp, Mitsubishi, NEC и так далее.

В книге вы изучили практически все компоненты платформы Java 2 Micro Edition, за исключением ряда специфических свойств, ознакомиться с которыми можно с помощью справочника, находящегося в приложении 2 этой книги.

Как автор, надеюсь, что эта книга помогла вам разобраться в хитростях технологии Java 2 Micro Edition и поможет найти в дальнейшем хорошо оплачиваемую работу. При прочтении книги у вас наверно появлялись различные вопросы, задать которые можно по адресу электронной почты: . Думаю, что количество вопросов может исчисляться сотнями, поэтому на все ответить не смогу, но на наиболее интересные вопросы отвечу обязательно.

Приложение 1. Основы языка Java

Это приложение не претендует на роль полного руководства по языку Java (Ява), но данного материала будет достаточно для дальнейшего изучения книги. Предлагаемая к рассмотрению в этом разделе информация содержит основы языка Java и ориентирована на неподготовленного читателя. Также нужно иметь в виду, что обучение языку Java будет происходить в соответствии с контекстом книги, а именно, всей той части языка Java, необходимой для программирования мобильных устройств. То есть такие «продвинутые» темы как аплеты, библ-иотеки AWT и Swing в этом приложении не рассматриваются, поскольку не применяются в Java 2 Micro Edition.

1.1. Введение в программирование

Программирование - это написание исходного кода программы на одном из языков программирования. Существует множество различных языков программирования, благодаря которым создаются всевозможные программы, решающие определенный круг задач. Язык программирования - это набор зарезервированных слов, с помощью которых пишется исходный код программы. Компьютерные системы еще не в силах понимать человеческий язык и логику, поэтому все программы пишутся на языках программирования, которые впоследствии переводятся на язык компьютера, то есть в машинный код. Системы, переводящие исходный код программы в машинный код, очень сложные и их, как правило, создают не один десяток месяцев и не один десяток программистов. Такие системы называются интегрированными средами программирования приложений.

Система программирования представляет собой огромную продуманную визуальную среду, где можно писать исходный код программы, переводить его в машинный код, тестировать, отлаживать и многое другое. Также существуют программы, которые позволяют производить вышеперечисленные действия при помощи командной строки. Язык Java предоставляет такую возможность, но в книге данная проблематика не освещается.

Вы, наверное, не раз слышали термин «программа написана под Windows или под Linux, Unix*. Дело б том, что среды программирования при переводе языка программирования в машинный код могут быть двух видов - это компиляторы и интерпретаторы. Говоря про общий вид: компиляция или интерпретация программы залает способ дальнейшего выполнения программы. Программы написанные на языке Java всегда работают на основе интерпретации, тогда как программы написанные на C/C++ - компиляции. В чем разница этих двух способов? Компилятор после написания исходного кода в момент компиляции читает сразу

Основы языка Java

весь исходный код программы и переводит в машинный код. После чего программа существует как одно целое и может выполняться только в той операционной системе, в которой она была написана. Поэтому программы, написанные под Windows, не могут функционировать в среде Linux и наоборот. Интерпретатор осуществляет пошаговое или построчное выполнение программы каждый раз, когда она выполняется. Во время интерпретации создается не выполняемый код, а виртуальный, который впоследствии выполняется виртуальной Java машиной. Поэтому на любой платформе - Windows или Linux, Java-программы могут одинаково выполняться при наличии в системе виртуальной Java машины, которая еще носит название Системы времени выполнения.

Все что сейчас от вас требуется - это изучение синтаксиса языка Java, для того чтобы писать и понимать исходные коды программ, написанные на этом язьже. А так же освоить работу с одной из сред программирования, подробное описание которых вы найдете в главе 3. Это приложение содержит теоретический материал, раскрьшающий особенности программирования на языке Java.

1.2. Объектно-ориентированное программирование

Java типиризированный, и по своей природе объектно-ориентированный язык программирования. Эти термины при детальном рассмотрении очень просты в понимании. Основных типов данных мы коснемся, когда будем обсуждать семантику языка, а сейчас сосредоточимся на объектно-ориентированной парадигме современного программирования.

Объектно-ориентированное программирование построено на объектах по аналогии с нашим миром. Если оглянуться вокруг себя, то обязательно можно найти что-то, что поможет более ярко разобраться в модели такого программирования. Например, я сейчас сижу за столом и печатаю эту главу на компьютере, который состоит из монитора, системного блока, клавиатуры, мыши и так далее. Все эти части являются объектами/из которых состоит компьютер. Зная это, очень легко сформулировать какую-то обобщенную модель работы всего компьютера. Если не разбираться в тонкостях программных и аппаратных свойств компьютера, то можно сказать, что объект Системный блок производит определенные действия, которые показывает объект Монитор. Объект Клавиатура в свою очередь может корректировать или вообще задавать действия для объекта Системный блок, а тот влияет на объект Монитор. Объект Колонки предназначен для воспроизведения звуковых данных с различных источников. Построенный процесс очень хорошо характеризует всю систему объектно-ориентированного программирования. Представьте себе некий мощный программный продукт, содержащий сотни тысяч строк кода. Если не использовать объектно-ориентированное программирование, то вся программа должна выполняться построчно, строка за строкой и в принципе каждая из последующих строк кода обязательно будет связана с предыдущей. Когда потребуется изменить этот программный код, скажем при необходимости улучшения каких-то элементов, то придется произве-

сти большое количество работы с кодом. В объектно-ориентированном программировании все куда проще. Допустим, вас уже не устраивает пятнадцати дюймовый монитор. Вы можете спокойно его обменять, например на семнадцати или девятнадцати дюймовый монитор, конечно же, при наличии определенных материальных средств. Сам же процесс обмена не повлечет за собой огромных проблем. Ну, разве что драйвер придется сменить, да вытереть пыль из-под старого монитора. Объектно-ориентированное программирование очень легко и ясно отражает суть решаемой проблемы и что самое главное, дает возможность бео ущер-. бадля всей программы убирать старые и ненужные объекты заменяя их на новые, точнее говоря, модернизировать без лишних затрат. Также общая читабельность всей программы становится намного проще. Существенно и то, что один и тот же код можно использовать в абсолютно разных программах.

1.2.1.Классы

Стержнем всех программ Java являются классы, на которых основывается объектно-ориентированное программирование. Вы по сути уже знаете, что такое классы, но пока об этом не догадываетесь. В предыдущем разделе мы говорили об объектах, ставя в пример устройство всего компьютера. Каждый объектов, из которых собран компьютер, является представителем своего класса. Например, класс Мониторов объединяет все мониторы вне зависимости от их типов, размеров и возможностей, а один какой-то конкретный монитор, стоящий на вашем столе и есть объект класса мониторов. Такой подход позволяет очень легко моделировать всевозможные процессы в программировании, облегчая решение поставленных задач. Например, имеется четыре объекта четырех разных классов: монитор, системный блок, клавиатура и колонки. Чтобы воспроизвести звуковой файл необходимо при помощи клавиатуры дать команду системному блоку, само же действие по даче команды вы будете наблюдать визуально на мониторе и, в итоге, колонки воспроизведут звуковой файл. То есть любой объект является частью определенного класса и содержит в себе все имеющиеся у этого класса средства и возможности. Объектов одного класса может быть столько, сколько это необходимо для решения поставленной задачи.

1.2.2. Методы

Когда приводился пример воспроизведения звукового файла, то было упомянуто о даче команды или сообщения, на основе которого и выполнялись определенные действия. Задача по выполнению действий решается с помощью методов, которые имеет каждый объект. Методы — это набор команд, с помощью которых можно производить те или иные действия с объектом.

Каждый объект имеет свое назначение и призван решать определенный круг задач с помощью методов. Какой толк был бы, например, в объекте Клавиатура, если нельзя было бы нажимать на клавиши получая при этом возможность отдавать команды? Объект Клавиатура имеет некое количество клавиш, с помощью которых пользователь приобретает контроль над устройством ввода и может от-

Основы языка Java

давать необходимые команды. Обработка таких команд в целом, происходит с помощью методов. Например, вы нажимаете клавишу Esc для отмены каких-либо действий и тем самым даете команду методу, закрепленному за этой клавишей который на программном уровне решает эту задачу. Сразу же возникает вопрос о количестве методов объекта Клавиатура, но здесь может быть различная реализация — как от определения методов для каждой из клавиш (что, вообще-то, неразумно), так и до создания одного метода который будет следить за общим состоянием клавиатуры. То есть, этот метод следит затем, была ли нажата клавиша, а потом в зависимости от того какая из клавиш задействована, решает, что ему делать.

Итак, мы видим, что каждый из объектов может иметь в своем распоряжении набор методов для решения различных задач: А поскольку каждый объект явля-'ется объектом определенного класса, то получается, что класс содержит набор методов, которыми и пользуются различные объекты одного класса. В языке Java все созданные вами методы должны принадлежать или являться частью какого-то конкретного класса.

1.3. Синтаксис и семантика языка Java 2 МЕ

Для того чтобы говорить и читать на любом иностранном язьже, необходимо изучить алфавит и грамматику этого языка. Подобное условие наблюдается и при изучении языков программирования, с той лишь разницей, как мне кажется, что этот процесс несколько легче.

Таким образом, как вы знаете из раздела посвященного основам программирования, прежде чем начинать писать исходный код программы, необходимо сначала решить поставленную перед вами задачу в любом удобном для себя виде.

Давайте создадим некий класс отвечающий, например, за телефон, который будет иметь всего два метода: включающий и выключающий этот самый телефон. Поскольку мы сейчас не знаем синтаксис языка Java, то напишем класс Телефон на абстрактном язьже.

Класс Телефон { •

Метод Включить С ) {

/ / операции включению телефона }

Метод Выключить ( )

{

/ / операции по выключению телефона

Таким вот образом может выглядеть класс Телефон. Заметьте, что фигурные скобки обозначают соответственно начало и конец тела класса, метода, либо вся-

Для перехода к следующей странице статьи перейдите по вы подающему меню
Basket Корзина
Your basket is empty Ваша корзина пуста
'); $(el).append(g); $(g).show(); } _uPostForm('',{type:'POST',url:'/shop/basket',data:{'mode':'clear'}}); return false; } function removeBasket(id){ if(lock_buttons) return false; else lock_buttons = 1; $('#basket-item-'+id+' .sb-func').removeClass('remove').addClass('myWinLoadS').attr('title',''); _uPostForm('',{type:'POST',url:'/shop/basket',data:{'mode':'del', 'id':id}}); return false; } function add2Basket(id,pref){ if(lock_buttons) return false; else lock_buttons = 1; var opt = new Array(); $('#b'+pref+'-'+id+'-basket').attr('disabled','disabled'); $('#'+pref+'-'+id+'-basket').removeClass('done').removeClass('err').removeClass('add').addClass('wait').attr('title',''); $('#'+pref+'-'+id+'-options').find('input:checked, select').each(function(){ opt.push(this.id.split('-')[3]+'-'+this.value);}); _uPostForm('',{type:'POST',url:'/shop/basket',data:{'mode':'add', 'id':id, 'pref':pref, 'opt':opt.join(':'), 'cnt':$('#q'+pref+'-'+id+'-basket').attr('value')}}); return false; } function buyNow(id,pref){ if(lock_buttons) return false; else lock_buttons = 1; var opt = new Array(); $('#b'+pref+'-'+id+'-buynow').attr('disabled','disabled'); $('#'+pref+'-'+id+'-buynow').removeClass('done').removeClass('err').removeClass('now').addClass('wait').attr('title',''); $('#'+pref+'-'+id+'-options').find('input:checked, select').each(function(){ opt.push(this.id.split('-')[3]+'-'+this.value);}); _uPostForm('',{type:'POST',url:'/shop/basket',data:{'mode':'add', 'id':id, 'pref':pref, 'opt':opt.join(':'), 'cnt':$('#q'+pref+'-'+id+'-basket').attr('value'), 'now':1}}); return false; } //-->
Search Поиск
Calendar Календарь
«  March Март 2011  »
Mon Пн Tues Вт Wed Ср Thurs Чт Fri Пт Sat Сб Sun Вс
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archive records Архив записей

Ссылки:

Rambler's Top100 Все для дома - Бытовая техника, опубликовать информацию о фирме
QLE 88x31

раскрутка сайта в интернете Рейтинг сайтов Товары / Услуги

Copyright MyCorp © 2011 Создать сайт бесплатно

Copyright MyCorp © 2011