После того как фоновые изображения инициализированы, метод start() инициализирует таймер и режим. Переменная mode инициализируется 0, что соответствует погашенному огню маяка (нет сообщения), в то время как переменная morseTimer обнуляется, несмотря на то что она не используется в отсутствие сообщения.
Наиболее важная часть кода метода start() реализует режим сервера или клиента. В зависимости от значения переменной isServer создается экземпляр класса LHServer или LHClient. После этого создается сетевой объект, вызывается метод старт, запускающий поток соединения.
Метод start() инициализирует мидлет Lighthouse, а метод update() обрабатывает пользовательский ввод и позволяет вам отправлять сообщения, закодированные азбукой Морзе. В листинге 14.6 приведен код метода update().
Листинг 14.6. Метод update() класса LHCanvas отправляет сообщения, закодированные азбукой Морзе, в соответствии с нажатыми клавишамиprivate void update() {
// обработка пользовательского ввода
int keyState = getKeyStates();
if ((keyState & LEFT_PRESSED) != 0) {
if (isServer) //Передать точку на другой телефон
server.sendMessage("Dot");
else
client.sendMessage("Dot");
status = "Dot";
}
else if ((keyState & RIGHT_PRESSED) != 0) {
if (isServer) //Передать тире на другой телефон
server.sendMessage("Dash");
else
client.sendMessage("Dash");
status = "Dash";
}
// обновить таймер кода Морзе
if (mode != 0) {
morseTimer++;
// тайм-аут точки
if (mode == 1 && morseTimer > 3)
mode = 0;
// тайм-аут тире
else if (mode == 2 && morseTimer > 9)
mode = 0;
}
}